java 中通过 Internet 实施的点对点通信

Peer to peer communication over internet implementation in java

我正在尝试在 java 中构建一个系统,其中一台计算机充当服务器,另一台计算机充当客户端,并将它们连接在一起(即向它们发送数据 b/w) public 网络。这是我的伪代码 -

Server.java

ServerSocket server = new ServerSocket(55955);
Socket socket = server.accept();

Client.java

 Socket socket = new Socket("<ip address of server>", 55955);
//code to send and receive response from server

如果我的服务器和客户端 运行ning 在我的 computer.But 上,如果我 运行 服务器在另一台机器上(互联网上朋友的电脑),代码工作正常并尝试在客户端 运行 宁我的机器上使用该 ip,它不工作。我做了很多谷歌搜索,除了打开机器上的防火墙或端口外没有找到合适的解决方案。

  1. 是否有任何其他选项可以在不进行任何转发或打开端口的情况下连接 b/w 互联网上的计算机?
  2. 有一些点对点系统(例如:skype)等可以做​​同样的事情,我正在努力实现(据我所知,它没有在主机上打开任何端口)。如有错误请指正

谢谢。

谢谢。我正在添加我终于能够使用的解决方案。

这可以使用 NAT 打孔 来实现。 找到了这些解释该方法的很棒的文章。

  1. Peer-to-Peer Communication Across Network Address Translators
  2. How Skype gets around firewalls