将 wifi 切换到 3g iOS posix 套接字时,有时套接字会死机
Sometimes socket dies when switching wifi to 3g iOS posix sockets
我在网上进行了大量搜索,但没有找到一个好的答案。
我正在 iOS/Android 上使用 posix 套接字用 C++ 编写基于套接字的应用程序。
当从 wifi->3g 切换时,有时 当 reading/writing.
时,套接字会死掉而不会出现任何错误
我可以在 iOS 上使用可达性 API(以及 android 上的类似功能)来检测网络何时切换。
发生这种情况时我是destroying/recreating套接字。问题是如果套接字还活着,服务器将在我关闭套接字时收到信号。如果服务器收到关闭信号,它会假定客户端有意断开连接并通知其他人,这不是我想要的。如果套接字死了,服务器就收不到这个信号,一切正常。
其他人如何处理这种情况?我真的不想用超时来检测这个。
为什么它有时也会死?我怎么知道套接字实际上已经死了?
为了解决这个问题,这就是我正在采用的方法。
切换网络时,我向服务器发送一个 ping 和重新连接数据包,并创建一个新套接字。
谁先响应,我就关闭另一个连接。
也需要对服务器端进行一些更改才能正确处理此问题
我在网上进行了大量搜索,但没有找到一个好的答案。
我正在 iOS/Android 上使用 posix 套接字用 C++ 编写基于套接字的应用程序。
当从 wifi->3g 切换时,有时 当 reading/writing.
时,套接字会死掉而不会出现任何错误我可以在 iOS 上使用可达性 API(以及 android 上的类似功能)来检测网络何时切换。
发生这种情况时我是destroying/recreating套接字。问题是如果套接字还活着,服务器将在我关闭套接字时收到信号。如果服务器收到关闭信号,它会假定客户端有意断开连接并通知其他人,这不是我想要的。如果套接字死了,服务器就收不到这个信号,一切正常。
其他人如何处理这种情况?我真的不想用超时来检测这个。
为什么它有时也会死?我怎么知道套接字实际上已经死了?
为了解决这个问题,这就是我正在采用的方法。
切换网络时,我向服务器发送一个 ping 和重新连接数据包,并创建一个新套接字。
谁先响应,我就关闭另一个连接。
也需要对服务器端进行一些更改才能正确处理此问题