我试图做一个套接字连接,以保持活着,以便在连接丢失的情况下。所以基本上我想保持服务器始终打开(最好是客户端),并在连接丢失后重新启动客户端。但如果一端关闭了两端关闭。我通过将两端都放在同一台计算机"localhost"
上并单击X按钮来模拟此操作。这可能是我的问题的根源吗?在连接丢失的情况下保持python套接字活着
反正我的连接码 m.connect(("localhost", 5000))
处于if
和try
和while
例如
while True: if tryconnection: #Error handeling try: m.connect(("localhost", 5000)) init = True tryconnection = False except socket.error: init = False tryconnection = True
而在我的代码的最后我只是一个m.send("example")
当我按下一个按钮,如果返回一个错误的尝试重新连接到"localhost"
启动代码。而服务器是一个非常通用的服务器设置,在x.accept()
周围有一个while
循环。那么在连接关闭时如何保持它们都处于活动状态,以便它们在重新打开时可以重新连接。或者,我的代码是否正常,它只是在同一台计算机上模拟而已?
TCP无法“保持连接处于活动状态” - 所以至少有两个选项:1.使用无连接的UDP,并且在所有需要的层之上分层以使数据传输可靠并且流畅,控制(即复制相当多的TCP堆栈:-o或2)继续使用TCP,但在其上添加一个层,以便当客户端重新连接客户端时,将某些特定于客户端的信息(令牌/ cookie)提供给服务器允许服务器恢复以前的连接。这是您的浏览器可以使用cookie恢复与服务器的Web会话的方式。 – barny
你有没有我如何添加图层的例子。我比较新。谢谢 – ferret249
当客户端连接时,如果客户端没有保存,客户端会自动发送一条消息,说明'这是我过去的令牌'或'没有令牌'。在服务器上,对于新的TCP连接,等待令牌信息并验证令牌(例如,服务器是否有记录?是否不太旧?是否用户注销?)并进行适当处理。例如如果客户端已经注销,则用户需要重新进行身份验证。如果没有注销,则最近一次连接是最近的,然后恢复会话。这完全是*网站如何记住用户并在浏览器中使用cookie保留购物篮。 – barny