我在网上广泛搜索,但没有找到一个好的答案。
我在iOS / Android上使用posix套接字在C ++中编写基于套接字的应用程序。
当从wifi-> 3g, SOMETIMES 切换时,套接字在读取/写入时没有出现任何错误就会死机。
我可以使用iOS上的可访问性API(以及类似的android)来检测网络何时切换。
发生这种情况时,我正在销毁/重新创建套接字。问题是如果套接字处于活动状态,服务器将在关闭套接字时收到信号。如果服务器收到关闭信号,它将假定客户端故意断开连接并通知其他人,这不是我想要的。如果套接字已死,服务器将不会收到此信号,一切正常。
其他人如何处理这种情况?我真的不想用超时来检测这个。
为什么有时也会死?我怎么能告诉套接字实际上已经死了?
答案 0 :(得分:0)
只是为了解决这个问题,这就是我采取的方法。
切换网络时,我向服务器发送ping-and-reconnect数据包,并创建一个新套接字。
首先响应,我关闭另一个连接。
还需要进行一些服务器端更改才能正确处理