2016-09-18 1 views
0

привет я уже problème с питона розеткой на s.sendto(data,addr) и мой код, как этотпитон 3.5.2 UdpServer SendTo() errore

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 работает

+0

привет! глупый вопрос, не проверяя его ... не было бы 's.sendto()' вместо 'socket.sendto()'? –

+0

думаю, что вы очень –

ответ

0

Кажется, что вы опечалили оператор socket.sendto(...: AttributeError возникает, поскольку метод sendto() вызывается из экземпляра с класса socket.socket (как у вас есть в s), а не от самого модуля socket. См. here для получения более подробной информации о значении этого утверждения.

Таким образом, вы в основном нужно изменить socket.sendto(... к s.sendto(...

также, если вы хотите, чтобы проверить атрибуты любого x объекта (кроме чтения документации) вы можете просто проверить его x.__dict__ поле, как объяснено here

cheers