我一直在努力与套接字一起努力,取得良好的进展,但我一直遇到问题,并且觉得我必须做错事情才能做到这一点。
有很多教程可以实现TCP客户端和服务器,通常在:
我可以处理。但是,似乎没有人详细介绍您应该和不应该使用相同的两台机器/进程之间的顺序通信。
我是在执行多个消息的函数调用的一般序列之后,但是为了提出一个真正的问题,这里有一些约束:
和一些具体问题:
close()
或通过某种错误)是指通信结束还是整个对象的生命周期结束?
socket.socket()
?recv()
超时,套接字是否可重复使用,还是应该将其丢弃?同样,我可以使用相同的套接字对象启动新连接,还是需要一个全新的套接字?答案 0 :(得分:2)
(clientsocket, address) = serversocket.accept()
调用返回的新套接字。您可以使用相同的端口。 (想想网络服务器,他们总是接受来自数千个客户端的同一端口的连接)在这两种情况下(关闭或不关闭),您应该有一个消息终止符号,例如\n
。然后你必须从插座读取,直到你到达标志。这种用法很常见,python有一个构造:socket.makefile
和file.readline
更新:
更新2: 您永远不应该假设连接是可靠的,但包括在出现错误时重新连接的机制。因此,即使间隙较长,也可以尝试使用相同的连接。 至于你得到的错误:如果你需要特定的代码帮助,你应该发布小(但完整)的例子。