Iphone 失去WiFi网络后从插座接收数据

Iphone 失去WiFi网络后从插座接收数据,iphone,sockets,wifi,Iphone,Sockets,Wifi,我有客户端/服务器应用程序。iPhone上的客户端,基于Windows的机器上的服务器。首先,我建立了与服务器的连接,这很好。当我离开WiFi区域时,客户端断开连接(这是预期的) 但是,当我再次进入WiFi区域并尝试连接到服务器时,连接已建立,但客户端未收到任何数据。我需要重新启动客户端应用程序以连接到服务器 为什么会这样?当我以大约1 Mbit/s的速度向两个方向发送数据时,总是会发生这种情况 我会感谢你的任何想法=) 谢谢当您离开Wifi区域时,Tcp检测到您没有连接,因此服务器将断开Tcp

我有
客户端/服务器
应用程序。iPhone上的客户端,基于Windows的机器上的服务器。首先,我建立了与服务器的连接,这很好。当我离开WiFi区域时,客户端断开连接(这是预期的)

但是,当我再次进入
WiFi
区域并尝试连接到服务器时,连接已建立,但客户端未收到任何数据。我需要重新启动客户端应用程序以连接到服务器

为什么会这样?当我以大约1 Mbit/s的速度向两个方向发送数据时,总是会发生这种情况

我会感谢你的任何想法=)


谢谢

当您离开Wifi区域时,Tcp检测到您没有连接,因此服务器将断开Tcp连接。当你回到Wifi范围时,你必须重新建立它

我不是这方面的专家,但可能有一个时间限制,在这个时间限制内,如果你重新进入Wifi,现有的Tcp连接会被重新使用吗


但是,为了保持健壮性,如果在Wifi中操作是您的主要场景之一,您应该始终将应用程序编码为重试。

您的TCP在尝试通过一段时间不存在的链接获取数据时已进入长时间超时。您需要检测到这种情况,关闭套接字,然后重新连接


或者,如果您实际上不需要TCP的可靠性,请切换到使用UDP(虽然这不是它的正确名称,但可以将UDP视为“不可靠的数据报协议”,换句话说,无法保证传输,也无法保证以正确的顺序传输)。

是的,我为我的应用程序编写代码以重试连接。问题是TCP会话被创建,客户端向服务器发送握手数据包(我自己的“握手”,而不是TCP),服务器接收到它,但来自服务器的回复不会出现在客户端。所以,从客户机到服务器的数据走,但不是相反的方向。这种行为是上述案例的结果。在所有其他情况下,该应用程序工作正常。