我正在尝试为我的网络课程创建一个Java聊天应用程序。目前,我卡在试图连接到另一个路由器后面的人身上。我现在的项目是有一个客户端程序和一个服务器程序。客户端程序首先登录到服务器程序,将他们的IP和端口记录在数据库中,然后服务器将他们的朋友列表以及其IP和端口发送回给他们。然后,客户端关闭与服务器的连接,并尝试使用服务器返回的信息连接到另一个客户端。到目前为止,我的程序只能连接到服务器并获取朋友的IP和端口,但是当我使用这些值连接到其他客户端时,无法连接。
以下是用于连接服务器的Java代码片段,然后以下是我在客户端上执行的操作。
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);
现在,技术上说,我正在监听与连接服务器使用的相同端口,该端口已登录并可从另一个客户端检索,在NAT表中具有我的IP和端口。 我不确定我缺少什么或是否需要执行某些协议或其他操作。 我已经查看了TCP和UDP协议穿透,但我不确定如何实际完成或如何实施它。
如果有任何建议,将不胜感激。