Tôi đang học lập trình mạng và cố gắng nắm bắt cơ bản về các ổ cắm thông qua ví dụ này.Socket.error: Đối số không hợp lệ được cung cấp
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 '
Tuy nhiên, ném nó lên một ngoại lệ nói những lập luận do getsockname() là không hợp lệ đặc biệt trên dòng 22.The code đang đúng như xa như tôi know.Here là ngoại lệ
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
Sử dụng PyScripter 2.5.3.0 x86
là winsock đó? – wRAR
Một ổ cắm có thể không thực sự * có * một địa chỉ trước khi gửi, trừ khi bạn gọi 'bind' trên nó trước tiên. Trên máy Mac, tôi không gặp lỗi nhưng cổng được trả về là '0' (nghĩa là nó chưa được gán cổng). – robertklep
Tôi đang sử dụng Python. Mô-đun ổ cắm tiêu chuẩn – devsaw