2012-11-08 120 views
0

我知道我的IP地址,以及我的朋友的IP地址。 如何在两台机器之间传输对象/文件? 我是一名高级Java程序员,但从未与网络合作过。如何与远程计算机上的对象进行通信?

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

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

+0

是“朋友”人还是软件? – bobah

+0

你可以使用scp :)你的问题的描述不是详细的!你想在Java中实现一些应用程序?你想使用一些已经制定的解决方案?你想使用Java或其他语言? – codewarrior

回答

4

如果您正在寻找两个java应用程序之间的通信和不想干扰低层网络细节,那么您可以使用以下两种方法,具体取决于您正在处理的应用程序的类型。

  • 如果这两个应用程序(在两台机器上)是Java独立的应用程序,然后RMI是最好的选择。从这些链接中检查基本知识(1,2
  • 如果您的应用程序(接收文件/对象)是Web应用程序,那么您可以在服务端编写Servlet,然后编写客户端应用程序以发送文件/对象(二进制)到服务器。为此目的,Commons FileUpload是非常受欢迎的图书馆。
+0

感谢您的回复。无论如何,我正在使用一个名为jnmp2p的API。尽管它使用了一些反射技术,但我发现它非常直观且易于使用。 (http://code.google.com/p/jnmp2p/) – divs1210

0

作者jnmp2p在这里。我不再维护图书馆了,因为我已经转移到其他方面了。不过,我有一些评论。

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

例如,skype使用集合服务,其中两台机器都启动到第三台机器的出站连接并通过它进行通信。除了建立额外的基础设施以外,任何点对点解决方案都将局限于NAT内的子网,所以诸如JNMP2P或RMI(经过大幅修改)的解决方案将是您的最佳选择。

相关问题