我试着在服务器端和客户端之间编写一个简单的python代码来发送/接收消息。当我将我的计算机定义为服务器时,我收到一个错误,如下所示。有趣的是,相同的代码适用于另一台PC。
服务器代码:
import socket
s = socket.socket()
host = '10.1.1.25' # static ip of the server pc
port = 5001
s.bind(5)
c, addr = s.accept()
print("Got connection from", addr)
while True:
c.send("Server please type").encode()
print("From Server :", c.recv(4096))
c.close()
我收到此错误:
s.bind(5)
TypeError: getsockaddrarg: AF_INET address must be tuple, not int
我将 s.bind(5)替换为 s.bind((主机,端口))然后我收到此错误:
fd, addr = self._accept()
OSError: [WinError 10022] An invalid argument was supplied
客户代码:
import socket
s=socket.socket()
host="10.1.1.25"
port=5001
s.connect((host,port))
while True:
try:
print("from server:",s.recv(4096))
s.send(input("write something").encode())
except:
break
s.close()
注意: 我在Windows 8.1上遇到了这些错误,但它适用于Windows 10 客户端示例代码适用于我尝试过的每台计算机
感谢您的帮助。根据你的建议我修改了我的代码;
import socket
s = socket.socket()
host = '10.1.1.25'
port = 5001
s.bind((host,port))
s.listen(5)
c,addr=s.accept()
print("Got connection from", addr)
while True:
c.send(input("Server please type").encode())
print("From Server :", c.recv(4096))
s.close()
现在它适用于本地IP(当我调整127.0.0.1时),我可以在一台计算机上自己进行通信。即使我尝试与第二台计算机通信,我也没有收到任何错误,但我没有得到任何输出< / p>
答案 0 :(得分:0)
服务器必须监听才能接受传入连接。所以正确的顺序是:
s = socket.socket()
host = '10.1.1.25' # static ip of the server pc
port = 5001
s.bind((host, port))
s.listen(5)
end = False
while not end:
c, addr = s.accept()
# process c incoming connection from addr, optionaly set end = True
s.close()
答案 1 :(得分:0)
尝试将主机更改为“127.0.0.1”。
您说要在自己的计算机上连接,上面的IP地址是您计算机的IP地址(适用于所有计算机)。