套接字:看不到消息

时间:2015-09-11 18:25:35

标签: python sockets

我是一个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)

1 个答案:

答案 0 :(得分:0)

在行conn.close()之前,请使用conn.shutdown(socket.SHUT_RD)。请参阅socket documentation中的详细信息。

  

注意close():释放与连接关联的资源但是   不一定立即关闭连接。如果你想   及时关闭连接,之前调用shutdown()   关闭()。