如何与远程计算机上的对象进行通信?

时间:2012-11-08 08:00:43

标签: java networking

我知道我的IP地址和我朋友的IP地址。 如何在两台机器之间传输对象/文件? 我是一名高级Java程序员,但之前从未使用过网络。

编辑: 我现在使用的是名为jnmp2p(http://code.google.com/p/jnmp2p/)的API。 它在我使用内部IP时工作正常,但在我给外部IP时失败。

如何连接不在我的专用网络上的计算机?

2 个答案:

答案 0 :(得分:4)

如果您正在寻找两个Java应用程序之间的通信而不想插入低级网络详细信息,那么您可以使用以下两种方法,具体取决于您正在处理的应用程序的类型

  • 如果应用程序(在两台计算机上)都是java独立应用程序,那么 RMI 是最好的选择。查看这些链接的基础知识(12
  • 如果您的应用程序(接收文件/对象)是Web应用程序,那么您可以在服务端编写Servlet,然后编写客户端应用程序以将文件/对象(二进制)发送到服务器。 Commons FileUpload是非常受欢迎的图书馆。

答案 1 :(得分:0)

jnmp2p的作者。我不再维护图书馆,因为我已经转移到了其他东西上。不过我有一些评论。

与专用网络外部的IP进行点对点通信是一个难题。这是因为两端的有状态NAT和防火墙已成为常见现象,这会阻止您直接在计算机之间建立连接。

例如,skype使用集合服务,其中两台计算机都启动到第三台计算机的出站连接并通过它进行通信。除了设置额外的基础设施,任何点对点解决方案都将限制在NAT中的子网,因此JNMP2P或RMI(有大量修改)等解决方案将是您最好的选择。