我需要每隔一段时间发送某种保持活动状态的数据包吗?
编辑:要注意,这是与同一台计算机上的对等项。该计算机位于NAT的后面,NAT将用于此计算机的一系列端口转发到该端口。与服务器连接的客户端通过DNS打开连接。即使用myDomain.net端口进行连接。
在Windows上,没有发送数据的套接字在许多应用程序中是一个很大的麻烦源,必须正确处理。
问题是,so_keepalive的周期可以在系统范围内设置(否则,默认值为两个小时是无用的),也可以使用后来的winsock API设置。
因此,许多应用程序偶尔会发送一些字节的数据(对等体忽略不计),只是为了使网络层在没有接收到ACK之后(在该层完成了所有到期的重传并且ACK超时之后)声明断开连接。
如果我不关闭套接字: 客户端没有输出。服务器从不发送消息,或者客户端从不接收消息。 有人知道发生这种情况的可能原因吗?客户端使用一个线程接收消息,一个线程发送消息。客户端套接字在主客户端线程中创建,因此接收者和发送者线程使用当前套接字进行通信。 提前谢了。
在一个类中,在一个函数中,我创建了一个Tkinter画布。这个函数正在被另一个类调用,我希望Tkinter窗口弹出30秒,然后自动关闭。我有电话 但我犯了个错误 elf.tk.call('destroy',self.w)\u tkinter.TclError:无法调用“destroy”命令:应用程序已被销毁 那我怎么能让它自己关上呢?
我有一个很奇怪的问题快把我逼疯了。 我有一个Ruby服务器和一个Flash客户端(动作脚本3)。这是一个多人游戏。 问题是,一切都在完美地工作,然后,突然,一个随机的球员停止接收数据。当服务器因为不活动而关闭连接时,大约20-60秒后,客户端接收到所有缓冲的数据。 null 我不认为这是一个操作系统/网络问题,因为我已经从一个位于西班牙的VPS换到了位于爱尔兰的亚马逊EC2,问题仍然存在。 我觉得
更奇怪的是,当我在对等程序之外使用它时,这段代码仍然有效。任何帮助都将非常感谢,我已经为这件事挣扎了两天了。
结果: 在步骤6中,如果服务器在几分钟内关闭死连接--CY,则新通道CY2将变为单向--从客户端Y发送的数据不能到达服务器,包括ACK数据包,而反之亦然。 如果服务器在很长的时间(例如2小时)内关闭了已死的连接--CY,则不会出现任何问题。 这个问题只在运行NAT时才会发生,至少我们在同一个LAN中运行应用程序时不会重现这个问题(不需要穿越NAT)。 更多信息: 1)第一台计算机上的连接A:192
请参阅下面的代码: 当程序启动时,我使用telnet连接localhost:8888,3秒后,服务器会杀死我,但当我使用netstat观看时,套接字状态仍然是ESTABLISHED。如果我删除了File()函数,套接字可以正常关闭。我怎样才能解决这个问题?