我正在尝试为我的网络类创建一个java聊天应用程序。截至目前,我被困在尝试连接到不同路由器后面的人。我现在有我的项目的方式是我有一个客户端程序和一个服务器程序。客户端程序首先登录到服务器程序中,将其IP和端口记录在数据库中,然后服务器将其IP和端口返回给朋友列表。然后,客户端关闭与服务器的连接,并尝试使用服务器发回的信息连接到另一个客户端。到目前为止,我的程序只能连接到服务器并获取朋友的IP和端口,但是当我使用这些值连接到另一个客户端时,我无法连接。Java nat遍历聊天应用程序
socket = new Socket();
socket.setReuseAddress(true);
socket.setKeepAlive(true);
socket.setSoLinger(true, 10);
socket.bind(new InetSocketAddress(Port));
socket.connect(new InetSocketAddress(host, SERVER_PORT));
reusePort = socket.getLocalPort();
以上是用于连接到服务器的java代码片段,下面是我在客户端做的事情。
ss = new ServerSocket(reusePort);
所以,现在在技术上,我听我用来连接到与被登录并检索到另一个客户端,并与我的IP和端口NAT表服务器的同一端口上。我不知道我错过了什么,或者是否有某些协议或我必须做的事情。我已经看过TCP和UDP打孔,但我不确定这是如何实际完成的或如何实现它。
任何建议,将不胜感激。
我看你已经接受一个答案,但似乎你想看看“孔Puching”。接受的答案并不真正回答你的问题,而是告诉你让你的应用程序的所有信息都通过你的服务器,而且你似乎想直接连接你的客户端。 – 2014-11-01 10:51:03
嘿你找到你的答案了。请帮帮我。我有同样的问题。 – 2016-03-08 07:33:53
[STUN,TURN,ICE library for Java]的可能重复(http://stackoverflow.com/questions/2039147/stun-turn-ice-library-for-java) – 2017-04-19 14:04:19