2012-02-23 33 views
1

假设我有三台计算机:A,B,C:其中(A,B)构成网络(直接连接)和(B,C)直接连接。现在,我想从A传输文件,使用Java套接字C(反之亦然)。我可以直接使用正常传输吗?理论上,由于它们形成两个具有不同IP地址的网络,所以在任何一台计算机上创建一个服务器套接字都不会导致其被另一个客户端套接字发现。使用公共接入点通过两个不同的网络传输文件

如果不是这样,那么正在B中间宿主,这只是进出文件流包含的方式缓冲?

如果两者都同样可取和/或可行的,然后将第一种方法提高安全性问题和第二方法减少效率。请从实施的角度回答。谢谢。

回答

1

第二条本办法肯定会工作(用于路由网络数据包到家庭网络时,我们使用了宽带这一技术,但这种工作在网络层不传输层)。本质上,您需要在B上创建两个套接字连接,一个用于A,另一个用于C.在B上创建两个线程以处理与每个对等体(A和C)的通信。在A和C也需要创建两个线程,一个用于发送数据,另一个用于接收数据。希望这是你所期待的。

如果你以某种方式设法在C机访问一台机器,那么它可以直接发送/接收设备之间的数据。在这种情况下还需要创建两个线程两个句柄发送/接收部分通信。

第一种方法是在性能方面更好,如果它的工作原理。但在第二种方法中,您可以在将数据转发给A之前在B上应用额外的安全检查。它完全取决于您的要求。