因为项目需求,刚买了一个阿里云的服务器,系统是ubuntu16.04的,配置好后,将Python写好的服务器脚本上传到云服务器。运行之后,在本地的客户端却无法连接(确定程序没有问题)。 在网上查找了很多方法,尝试无果。最终多亏实验室师兄的帮助,才解决。

遂,记录问题及解决方法,前车之鉴,请小心入坑!

无法连接服务器端可能的原因:(在这之前确保已经能够登录系统,正常运行)

1、阿里云相应端口没有开放

阿里云服务器默认是不开放所有端口的,刚购买的服务器只开了22,3389,ICMP这几个,那么如果是自己编写的服务器程序,设置的端口(一般是动态端口)往往是没有开的。所以需要我们自己去打开,打开方式:

在云服务器的左边列表中找到网络与安全->安全组->配置规则,

云服务器 所选密钥未在远程主机 云服务器未连接_socket

云服务器 所选密钥未在远程主机 云服务器未连接_阿里云_02

进入快速创建规则,仅需要修改自定义端口:TCP,9999(可以自定义端口号),授权对象:0.0.0.0/0(表示允许所有ip对象访问),即可。

云服务器 所选密钥未在远程主机 云服务器未连接_socket_03

2、服务器端程序和客户端程序地址设置错误(重点)
  1. 阿里云端服务器socket绑定阿里云的私网地址
  2. 要连接阿里云服务器的客户端的socket要设置为阿里云的公网地址
3、是不是下面这个原因?

云服务器 所选密钥未在远程主机 云服务器未连接_客户端_04

云服务器 所选密钥未在远程主机 云服务器未连接_阿里云_05

上面两张图,唯一的区别在于:第一张图里面,ip地址前有空格。最后是去掉了这个空格才连接成功的。

唉~

参考:

1、解决socket连接阿里云服务器所遇到的问题 2、阿里云服务器无法访问80或8080端口的 3、socket TCP:在阿里云ESC上搭建自己的TCP服务端程序