Java利用Socket 实现本地和服务器之间通信(小白萌新适用之绝对能运行版)
常规部署
1、先在自己本地跑通
客户端:
Socket s = new Socket(“localhost”,8888)
服务器端:
ServerSocket ss = new ServerSocket(8888);
端口号自定义,只要和正在运行的服务不冲突即可
2、部署至服务器
将客户端的ip改为服务器ip
String host="123.456.789.123”; //你的服务器地址
Socket s = new Socket(host,8888);
可能遇到的问题
java.net.ConnectException: Connection refused: connect
可能是没有开启服务器端的程序
java.net.ConnectException:Error:Connection timed out: connect
检查工具
1、检查能不能ping通服务器
打开cmd ping IP地址
2、尝试用telnet连接服务器
Windows下先打开telnet服务
控制面板->程序和功能->启用或关闭Windows功能->Telnet客户端
cmd中 telnet IP地址 端口
在这里插入图片描述
看能否连接
问题可能存在的位置
1、检查云服务器的安全组
我用的是阿里云的服务器
云服务器ESC->网络和安全->安全组中,点击当前服务器的"配置规则",在测试阶段配置以下规则,将服务器的出方向和入方向全都打开.
设置完成后再服务器端检查是否打开相关端口,
例如:查看80端口在服务器中是否正常被监听
netstat -ano | findstr :80
如果返回以下命令,表示 80 端口正常全网监听:
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING
2、检查Windows防火墙设置
在测试阶段将防火墙暂时全部关闭
Windows Defender安全中心->防火墙和网络保护
关闭Windows防火墙
3、检查服务器端防火墙设置
在测试阶段将防火墙暂时全部关闭
service iptables stop