【发布时间】:2019-02-27 09:11:40
【问题描述】:
我正在使用 Java 套接字创建一个加密的通信终端。我的问题是,当我通过“localhost”或我的计算机 LAN 地址连接时,程序连接完美并按预期工作,但是当我使用我的公共 IP 地址连接时,连接被拒绝,我得到了
java.net.ConnectException:连接超时:连接 在 java.base/java.net.DualStackPlainSocketImpl.connect0(本机方法) 在 java.base/java.net.DualStackPlainSocketImpl.socketConnect(未知来源) 在 java.base/java.net.AbstractPlainSocketImpl.doConnect(未知来源) 在 java.base/java.net.AbstractPlainSocketImpl.connectToAddress(未知来源) 在 java.base/java.net.AbstractPlainSocketImpl.connect(未知来源) 在 java.base/java.net.PlainSocketImpl.connect(未知来源) 在 java.base/java.net.SocksSocketImpl.connect(未知来源) 在 java.base/java.net.Socket.connect(未知来源) 在 java.base/java.net.Socket.connect(未知来源) 在 java.base/java.net.Socket.(未知来源) 在 java.base/java.net.Socket.(未知来源) 在 net.wolvenservices.clientcomms.Launcher.main(Launcher.java:27)
这是我的服务器的主要方法:
try{
serv = new ServerSocket(200);
sock = serv.accpet();
System.out.println(sock.getInetAddress() + ": user has connected");
in = new DataInputStream(sock.getInputStream());
out = new DataOutputStream(sock.getOutputStream());
}catch(IOException e){e.printStackTrace();}
客户端的主要方法
try{
sock = new Socet("[MyPublicIP]", 200); //this is line 27
in = new DataInputStream(sock.getInputStream());
out = new DataOutputStream(sock.getOutputStream());
...
catch(IOException e) {e.printStackTrace();}
我不会提供 MyPublicIP 的原因是出于明显的安全原因。
编辑: 是的,我已经测试了 ping 机器,我测试了 telnet,并且我使用了禁用的 windows 防火墙和端口转发,甚至为这台特定的机器启用了 DMZ。
【问题讨论】:
标签: java sockets stack-trace