zoukankan      html  css  js  c++  java
  • 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. 查询相关文档,参数格式是否符合要求
  • 相关阅读:
    模板学习系列(一)tuple
    apue读书笔记第十章
    在亚马逊上关于设计模式的一个评论
    编程珠玑笔记第12章习题
    编程珠玑第14章
    C#,.Net经典面试题目及答案
    sql where 1=1和 0=1 的作用(junyuz)
    快速排序算法
    一道面试题(C#实现了超大整数的加减乘法运算)
    数据结构实验之链表一:顺序建立链表
  • 原文地址:https://www.cnblogs.com/AimeeCodeWorld/p/7998949.html
Copyright © 2011-2022 走看看