Java – 无法与ServerSocket连接

我试图使用ServerSocket与端口2649,其他人无法连​​接。 它适用于localhost。 这是人们在尝试连接时遇到的错误:

Exception in thread "main" java.net.ConnectException: Connection timed out: connect at java.net.TwoStacksPlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) at java.net.AbstractPlainSocketImpl.connect(Unknown Source) at java.net.PlainSocketImpl.connect(Unknown Source) at java.net.SocksSocketImpl.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.(Unknown Source) at java.net.Socket.(Unknown Source) at Client.main(Client.java:11) 

我有端口转发,我的计算机上没有激活防火墙。 以下是端口转发时使用的设置。

http://sofzh.miximages.com/java/NLdaA.png

http://sofzh.miximages.com/java/FJpJQ.png

当我在canyouseeme.org上检查端口2649时,它说连接超时了。

我也在使用Windows XP。 任何帮助表示赞赏。

谢谢

编辑:这是我正在使用的代码

 import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.io.ObjectOutputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; public class Server { public static void main(String[] args)throws Exception { System.out.println("Starting..."); File file = new File("C:/Testing.txt"); InputStream in = new FileInputStream(file); ServerSocket server = new ServerSocket(2649); System.out.println("Ready for connection"); Socket socket = server.accept(); OutputStream output = socket.getOutputStream(); ObjectOutputStream out = new ObjectOutputStream(output); out.writeObject("C:/Testing.txt"); byte[] buffer = new byte[socket.getSendBufferSize()]; int bytesReceived = 0; while ((bytesReceived = in.read(buffer)) > 0) { output.write(buffer, 0, bytesReceived); } out.flush(); out.close(); in.close(); server.close(); socket.close(); output.flush(); output.close(); System.out.println("Finished"); } } import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.io.ObjectInputStream; import java.net.Socket; public class Client { public static void main(String[] args) throws Exception { System.out.println("Starting..."); Socket socket = new Socket("IP ADDRESS", 2649); InputStream input = socket.getInputStream(); ObjectInputStream in = new ObjectInputStream(socket.getInputStream()); FileOutputStream out = new FileOutputStream(new File((String) in.readObject())); byte[] buffer = new byte[socket.getReceiveBufferSize()]; int bytesReceived = 0; while ((bytesReceived = input.read(buffer)) > 0) { out.write(buffer, 0, bytesReceived); } in.close(); out.close(); input.close(); socket.close(); System.out.println("Finished"); } 

如果它不是防火墙。 确保将服务器套接字绑定到0.0.0.0而不是localhost。 尝试调用server.bind(new InetSocketAddress(“0.0.0.0”,port));

“连接超时” – >防火墙丢弃数据包。 最有可能是Windows防火墙 – 尝试禁用它并查看它们是否可以连接。