好的,我做了一些研究,显然这与连接中断有关,但是只有在我尝试接收消息时才会发生。我不知道哪里出了问题。
下面是服务器:
#!/usr/bin/python3
import socket
header = '64'
host = '192.168.0.48'
port = 5050
addr = host, port
disconnect = 'GVhdmU='
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(addr)
server.listen(10)
print(f'[LISTENING] on {addr}')
while True:
clientsocket, address = server.accept()
print(f'[TMP CONNECTION] from {address}')
msg_test = server.recv(64)
msg_test = msg_test.decode('utf-8')
if msg_test == header:
msg_encode = server.recv(1000000000000000000)
msg = msg_encode.decode('utf-8')
elif msg == disconnect:
clientsocket.close()
else:
clientsocket.close()注意:是的,我知道报头不正确。
下面是客户端:
import socket
host = '192.168.0.48'
port = 5050
addr = host, port
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(addr)
print('CONNECTED')
while True:
msg = input('What do you want to say to the server:')
header = '64'
client.send(bytes(header, 'utf-8'))
client.send(bytes(msg, 'utf-8'))
disconnect = input('Do you want to end(answer yes or no):')
if disconnect == no:
print("we're starting again")
if disconnect == yes:
client.send(bytes('bGVhdmU=', 'utf-8'))
break注意:这是通过我的网络从一个设备到另一个设备。
发布于 2021-07-22 13:28:51
您的服务器代码正在从错误的套接字读取。
在accept()返回clientsocket之后,它需要使用clientsocket而不是server进行读(写)。
因此,将server.recv()更改为clientsocket.recv()。
https://stackoverflow.com/questions/68478031
复制相似问题