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