有时套接字在将wifi切换到3g iOS posix套接字时死亡

时间:2015-05-27 11:02:53

标签: ios sockets posix

我在网上广泛搜索,但没有找到一个好的答案。

我在iOS / Android上使用posix套接字在C ++中编写基于套接字的应用程序。

当从wifi-> 3g, SOMETIMES 切换时,套接字在读取/写入时没有出现任何错误就会死机。

我可以使用iOS上的可访问性API(以及类似的android)来检测网络何时切换。

发生这种情况时,我正在销毁/重新创建套接字。问题是如果套接字处于活动状态,服务器将在关闭套接字时收到信号。如果服务器收到关闭信号,它将假定客户端故意断开连接并通知其他人,这不是我想要的。如果套接字已死,服务器将不会收到此信号,一切正常。

其他人如何处理这种情况?我真的不想用超时来检测这个。

为什么有时也会死?我怎么能告诉套接字实际上已经死了?

1 个答案:

答案 0 :(得分:0)

只是为了解决这个问题,这就是我采取的方法。

切换网络时,我向服务器发送ping-and-reconnect数据包,并创建一个新套接字。

首先响应,我关闭另一个连接。

还需要进行一些服务器端更改才能正确处理