Socket.erreur: Invalid Argument supplied
Je suis à l'apprentissage de réseaux de programmation et d'essayer de saisir les bases de sockets par le biais de cet exemple.
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 '
Cependant,son lancer une exception dire les arguments donnés par getsockname() n'étaient pas valides spécifiquement sur la ligne 22.Le code est correct, autant que je sache.Voici l'exception
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
À l'aide de PyScripter 2.5.3.0 x86
Est que winsock?
Une prise ne sera probablement pas en fait une adresse avant de l'envoyer, à moins que vous appelez
Je suis à l'aide de Python.La prise standard module
Quelle plate-forme êtes-vous? Je n'ai pas cette erreur sur python2.7 OSX 10.8
OK j'ai commenté le "avant l'envoi" getsockname() code et s'avère, vous avez raison, le support ne sera pas réellement une adresse .
Une prise ne sera probablement pas en fait une adresse avant de l'envoyer, à moins que vous appelez
bind
sur elle d'abord. Sur Mac, je n'ai pas d'erreur, mais le retour de port est 0
(ce qui signifie qu'il n'a pas été attribué un port encore).Je suis à l'aide de Python.La prise standard module
Quelle plate-forme êtes-vous? Je n'ai pas cette erreur sur python2.7 OSX 10.8
OK j'ai commenté le "avant l'envoi" getsockname() code et s'avère, vous avez raison, le support ne sera pas réellement une adresse .
OriginalL'auteur devsaw | 2013-03-26
Vous devez vous connecter pour publier un commentaire.
Eh bien j'ai eu le problème.Le support n'a pas d'adresse jusqu'à ce que son soit lié ou de l'envoi de données.
Juste eu à le commenter.
Grâce
OriginalL'auteur devsaw