问题描述:
在本地使用socket向NetAssist传送数据的时候,执行python文件后发现报出
python 报错TypeError: an integer is required
错误
代码:
1 #!/usr/bin/env python3 2 from socket import * 3 udpSocket = socket(AF_INET, SOCK_DGRAM) 4 destIp = input('enter ip:') 5 destPort = input('enter port:') 6 destData = input('enter data:') 7 8 udpSocket.sendto(destData.encode('gb2312'),(destIp, destPort))
执行结果:
enter ip:192.168.162.1enter port:8080enter data:hahaTraceback (most recent call last): File "udp-code.py", line 8, inudpSocket.sendto(destData.encode('gb2312'),(destIp, destPort))TypeError: an integer is required (got type str)
产生原因:
通过查询python文档后,发现是传递的参数不符合socket.sendto()方法的要求
文档描述:
发送UDP数据。将数据发送到套接字,address是形式为(ipaddr,port)的元组,指定远程地址。返回值是发送的字节数。
s.sendto(string[,flag],address)
destPort
的类型应该为int类型
修改代码:
1 #!/usr/bin/env python3 2 from socket import * 3 udpSocket = socket(AF_INET, SOCK_DGRAM) 4 destIp = input('enter ip:') 5 destPort = int(input('enter port:')) 6 destData = input('enter data:') 7 8 udpSocket.sendto(destData.encode('gb2312'),(destIp, destPort))
结果:
- 总结:
- 报错后,根据信息分析错误产生原因
- 查询相关文档,参数格式是否符合要求