如何在 iPhone 和主机之间实现双向 IP/TCP 连接。
1 回答
TCP/IP 通信是双向通信。
是的:服务器必须是监听连接的那个,客户端必须重新建立连接以防连接丢失。
但是在连接期间,客户端可以将消息发送到服务器(在需要时),反之亦然。
为了保持连接处于活动状态(它可以在一段时间内处于非活动状态后被终止),您可以定期发送一些虚拟(keepalive)字符串:通常从客户端到服务器,但它可以反过来。
由于您已经知道如何在 iOS 客户端和服务器之间建立连接(它可以基于 PC 或其他),并且您知道如何从客户端发送字符串到服务器 - 您只需要实现服务器到客户端的通信。
究竟如何做到这一点取决于您在 iOS 和 PC 服务器中使用的套接字类型。
Cesare Rocchi 的一个很好的教程可以在这里找到:如何创建基于套接字的 iPhone 应用程序和服务器
还有一个非常有用且有据可查的 Cocoa 套接字包装器,名为CocoaAsyncSocket,来自 Robbie Hanson 在 GitHub 上。
编辑:
在您的情况下,您通常会在一侧至少有一个基于套接字的客户端。客户端负责在连接丢失的情况下尝试重新建立连接(或第一次建立连接)。
另一方面,您有一个侦听器套接字 - 一个侦听新连接的套接字。对于每个新连接(来自客户端),它都会生成一个新套接字,然后您可以从那里处理两种方式的通信。所以客户端->服务器仅在建立连接期间是必需的。