我是一个python初学者,我正在尝试编写一个与其他设备连接的脚本。现在我正在尝试构建必须接收消息的服务器。但是,如果我收到一条消息,我在壳牌中看不到它
这里是代码:
import socket
HOST='**.**.**.**'
PORT=****
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
print('Connected by', addr)
while True:
data = conn.recv(1024)
if not data: break
conn.sendall(data)
conn.close()
data = data.decode("utf-8")
print("Message: " + data)
解决方案,如果文本不长于1024:
import socket
HOST='**.**.**.**'
PORT=****
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
print('Connected by', addr)
while True:
data = conn.recv(1024)
if not data: break
data1 = data
conn.sendall(data)
conn.close()
data1 = data1.decode("utf-8")
print("Message: " + data1)
答案 0 :(得分:0)
在行conn.close()
之前,请使用conn.shutdown(socket.SHUT_RD)
。请参阅socket documentation中的详细信息。
注意close():释放与连接关联的资源但是 不一定立即关闭连接。如果你想 及时关闭连接,之前调用shutdown() 关闭()。