我有一个 AsyncSocket 实例,我一直在 iPad 上用作服务器,然后在另一台 iPad 上运行 AsyncSocket 套接字,它充当客户端。我拥有在客户端和服务器之间交换数据的所有必要代码——那里没有问题。
我遇到的问题是一切正常,但在我的应用程序的错误测试期间,我注意到一个特别奇怪(和令人恼火的问题):
如果我关闭服务器 iPad(此时服务器上没有任何套接字的委托被触发),那么客户端将断开连接(并进入我不断重试的循环)。令人讨厌的是,即使服务器恢复正常,客户端仍然无法连接到它。事实上,即使我从头开始重新启动客户端,它仍然无法连接到服务器。我必须重新启动服务器应用程序才能使客户端能够再次连接。
奇怪的是,只有当服务器实际上从顶部的按钮“关闭”(即进入待机状态)时才会触发此错误。如果我只是使用主页按钮将应用程序发送到后台,那么客户端仍然保持与服务器的连接:只有当设备断开连接时,客户端才会收到断开委托消息并断开连接,然后拒绝重新连接。与此同时,服务器完全没有注意到这一点,并且根本没有触发任何委托方法。
概括我的问题:
- 当设备使用 iPad 顶部的按钮进入待机状态时,AsyncSocket 服务器实例究竟会发生什么?
- 为什么没有委托方法被触发,但任何连接的客户端都断开连接?
- 再次打开设备时会发生什么?
- 为什么客户端无法重新连接?