python 3.5.2 UdpServer sendto()错误:模块'socket'没有属性'sendto'

时间:2016-09-18 14:07:05

标签: sockets python-3.x networking attributes

我在s.sendto(data,addr)处遇到python套接字问题 和我的代码一样

import socket

    def Main():
        host = '127.0.0.1'
        port = 5000
        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        s.bind((host, port))
        print("server started")
        while True:
            data, addr = s.recvfrom(1024)

            print ("message from : "+ str(addr))
            print ("from connected user : "+ str(data))
            data = str(data.upper())
            print ("sending : "+ str(data))
            socket.sendto(data, addr)

和结果

    socket.sendto(data, addr)
AttributeError: module 'socket' has no attribute 'sendto'
        s.close()
    if __name__ == '__main__':
        Main()

并且在UdpClient s.sendto正在运行

1 个答案:

答案 0 :(得分:0)

您似乎错误输入了socket.sendto(...语句:由于要从类socket.socket的实例调用sendto()方法,因此引发了AttributeError(正如s中所示),而不是socket模块本身。有关该陈述含义的更多详细信息,请参阅here

因此,您基本上需要将socket.sendto(...更改为s.sendto(...

另外,如果您想检查任何x对象的属性,(除了阅读文档外),您只需检查其x.__dict__字段,如here所述

欢呼声