我有两个java程序,一个服务器和一个客户端,通过局域网进行通信没有问题,但他们似乎无法通过互联网进行交互。
服务器程序的套接字行是
ServerSocket s = new ServerSocket(serverPort,backLog,InetAddress.getByName(serverIp));
,客户的行是
Socket s = new Socket(serverAddress,serverPort);
我在服务器端没有错误,但客户端套接字永远不会给我
java.net.ConnectException: Connection timed out: connect
几秒钟后。
netstat -a命令在服务器上运行时给我
TCP 172.31.26.69:2674 WIN-CHU42MQF3R4:0 LISTENING
我认为这意味着ServerSocket正在侦听指向端口2674的任何互联网通信。再一次,这个程序在我的局域网上运行时效果很好,它无法通过互联网进行通信。
我已经确认两台计算机上没有其他程序正在使用端口2674,我已经允许AWS服务器上的所有表单和通信端口以及在我自己的防火墙上打开端口2674。但我想不出任何可能导致这个问题的事情。有什么可能会干扰吗?