我正在创建一个由服务器和多个客户端组成的软件,我需要两个客户端相互传输文件。
其工作流程如下所述:
我在第4步遇到了一个问题:因为out-net ip,我无法建立从文件接收器到文件发送者的套接字连接。
这里,out-net ip意味着这个ip是机器连接的路由器。该机器只有一个由路由器分配的网内IP。
答案 0 :(得分:1)
前段时间我创建了一个类似的应用程序。如果两个客户端都可以与服务器通信,那么为什么不将服务器用作网桥/网关。我的意思是,服务器将在两个客户端之间发送所有传输文件数据。您不必关闭原始套接字,在步骤1中创建的套接字和在步骤2中创建的套接字使用它们在客户端之间进行传输。这只是一个设计良好的协议的问题,在这种情况下,协议并不难实现。
答案 1 :(得分:0)
您是否已转发路由器上的相应端口?否则你的连接会在路由器上死掉。
答案 2 :(得分:0)
您描述的方式会带来两个问题。
问题1:在真实网络世界中,您可以找到许多配置文件接收器可以直接连接两个文件发送器。您需要配置很多来授予访问权限。
问题2:您使用该设计的代码变得复杂。文件发送者需要实现客户端和服务器套接字。
IMO更好的方式是文件发送方将所需文件传递给管理服务器。如果文件接收者想要文件,他只需从服务器上下载。