我正在处理涉及 Internet 上的 TCP 连接的学校编程项目。我不能在客户端上使用端口转发!有一个中继服务器工作。例如,客户端 A 不是连接到客户端 B 并发送数据,而是都连接到具有向 WAN 开放的端口的服务器,然后 A 将数据发送到服务器,服务器将其发送给 B。但是,这会花费额外的行程和使过程复杂化。
一般来说,我应该怎么做?有什么技巧可以让客户端直接通信,还是需要一个中继服务器?我以为 iChat 直接在客户端之间进行音频/视频聊天,但似乎不涉及端口转发或 NAT-PMP/UPnP。
万一这很重要,我在这个项目中使用了 Objective-C,在最后一个项目中使用了 Java,两者都在 Mac 上运行。