python报错 TypeError: an integer is required


问题描述:

在本地使用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.1
enter port:8080
enter data:haha
Traceback (most recent call last):
  File "udp-code.py", line 8, in <module>
    udpSocket.sendto(destData.encode('gb2312'),(destIp, destPort))
TypeError: an integer is required (got type str)

产生原因:

通过查询python文档后,发现是传递的参数不符合socket.sendto()方法的要求

文档描述:

s.sendto(string[,flag],address)
发送UDP数据。将数据发送到套接字,address是形式为(ipaddr,port)的元组,指定远程地址。返回值是发送的字节数。
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))

结果:

  • 总结:
  1. 报错后,根据信息分析错误产生原因
  2. 查询相关文档,参数格式是否符合要求


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM