我有一个TCP服务器,需要用Python编写一个客户端。
服务器是使用arduino_uip库的arduino ;服务器代码(几乎)与该库的TCP服务器示例相同。使用nc作为客户端,它工作正常。
但是,当我使用python套接字(如本答案所示)与服务器通信时,服务器会在套接字关闭或关闭时挂起。
服务器可能有问题;但是,由于nc作为客户端可以正常工作,所以我的问题是:
什么是这个答案从NC可在连接关机解释服务器挂什么不同/关闭)?
总结什么可行,什么不可行:
这是客户端代码:
import socket
def netcat(hostname, port, content):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((hostname, port))
s.sendall(content)
s.shutdown(socket.SHUT_WR)
while 1:
data = s.recv(1024)
if data == "":
break
print "Received:", repr(data)
print "Connection closed."
s.close()
Run Code Online (Sandbox Code Playgroud)
编辑:
似乎(Vorsprung的回答让我考虑了!)实际上这是一个计时问题。如果我在上面的代码中在关闭之前添加sleep(0.5),那么一切都很好(例如在netcat中,在我按Ctrl + C之前有手动延迟)。我想我现在必须检查那个arduino库...