socket通讯方面,原来是在局域网中测试,直接传入LanIp。建立socket的方式是
Socket socket = new Socket("192.168.1.234",8888);
在广域网中测试时,因为没有固定ip,所以就申请了一个no-ip的动态域名。
结果在运行程序时,上面语句中的ip直接换为域名,总是出现connection refused的提示。
端口是打开的,可是出现这个提示,就想着是不是建立连接的方式有问题。于是使用了另一种方式创建socket
String socketAddress ="myName.no-ip.org";
InetAddress netAddress = InetAddress.getByName(socketAddress);
System.out.println(netAddress.getHostAddress());
Socket socket = new Socket(netAddress,8888);
此时错误提示依旧。
于是直接在同一网段的两台电脑上分别运行服务器端和客户端,在服务器端的电脑上运行no-ip的客户端。
在登录路由器,再次设定路由器的端口转发规则,允许8888
ok了。。。。
这时转回原来的连接方式,发现通讯ok。再次把socket的客户端放在另一个网段,测试ok。
本次问题症结:connection refused的原因不是由于连接方式所致,重要的是通讯信道是否畅通,域名解析正确,端口使用ok、
还不知道如何通过cmd指令,判断端口是否被占用,这点比较恼火。