2013-03-26 17 views
8

Ağ iletişimi öğrenmeyi ve bu örnek aracılığıyla soket temellerini kavramaya çalışıyorum. AncakSocket.error: Geçersiz Argüman ürünle birlikte verilen

import socket,sys 


s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) 

MAX = 65535 
PORT = 1060 

if sys.argv[1:] == ['server']: 
    s.bind(('127.0.0.1',PORT)) 
    print 'Listening at ' , s.getsockname() 
    while True: 
     data,address = s.recvfrom(MAX) 
     print ' The address at ' , address , ' says ' , repr(data) 
     s.sendto('your data was %d bytes' % len(data),address) 

elif sys.argv[1:] == ['client']: 
    print ' Address before sending ' ,s.getsockname() 
    s.sendto('This is the message',('127.0.0.1',PORT)) 
    print ' Address after sending ' ,s.getsockname() 
    data,address = s.recvfrom(MAX) 
    print ' The server at ' , address , ' says ' , repr(data) 

else: 
    print >> sys.stderr, 'usage: udp_local.py server | client ' 

, onun getsockname tarafından verilen argümanları diyerek istisna atma() 22.The kodu kadarıyla kullanılması istisna

Traceback (most recent call last): 
    File "udp_local.py", line 23, in <module> 
    print ' Address before sending ' ,s.getsockname() 
    File "c:\Python27\lib\socket.py", line 224, in meth 
    return getattr(self._sock,name)(*args) 
error: [Errno 10022] An invalid argument was supplied 

know.Here var olduğu doğrudur özellikle on line geçersiz PyScripter 2.5.3.0 x86

+0

mi? – wRAR

+0

Bir soket, muhtemelen, öncelikle "bind" i çağırmazsanız, göndermeden önce bir adrese sahip olmaz. Mac'te bir hata alamıyorum, ancak döndürülen bağlantı noktası "0" (henüz bir bağlantı noktası atanmamış demektir). – robertklep

+0

Kullanıyorum Python.The standart soket modülü – devsaw

cevap

8

Sorunum var. Soketin bağlanmış veya veri gönderilinceye kadar adresi yok. Sadece yorum eklememiz gerekiyor. O winsock

elif sys.argv[1:] == ['client']: 
## print ' Address before sending ' ,s.getsockname() 

Teşekkür

+1

Bağlantı eklemeli ve cevabını kabul etmelisin –

İlgili konular