- 今天在写Socket通信代码的时候,使用云服务器自己与自己通信没有问题,但是当我们把客户端换为Windows系统的时候却无法发送信息到Linux当中,耗时一上午终于搞定了😒。
问题:
如上图,当我在windows的客户端给云服务器上运行的服务端的时候无论怎怎么都发不上去,我一开始一直以为是我代码的问题!! 结果是机器的问题😭。
解决方法
我们首先要来验证windows能不能Ping通我们的云服务器,如果能Ping通再来解决另外的问题。
如上图,我们windows和我们的Linux机器都连接不上!! 这里可能是防火墙的原因,这个网上很多文章都说了(我的不是这个问题😊)。我的是因为连接了校园网导致了无法Ping通!!! 我真的无语了😓。当我换上手机流量是Ping通了!!!
如果Ping通了的话,再来看一看是不是代码问题。
⚠️对于云服务器而言还需要在你买云服务器的平台的后台去开放端口,不然我们服务端的端口一直不能被访问。我就是因为这个原因,一直发送不出去消息。
这里以我的阿里云轻量应用服务器为例:
然后再到我们的Linux机器上查看防火墙状态,增加端口。
需要切换到超级用户
sudo ufw status
: 查看防火墙状态
如上图,是我们已经开启的端口,这个8888是我自己加的。
sudo allow 端口号/(udp/tcp)
: 添加端口,并指定协议,这里我是做udp测试就指定为udp。
sudo ufw status numbered
: 查看当前规则。
sudo ufw delete + 上面的规则编号(1,2,3,..)
: 删除添加的端口。
此时我们就可以通信啦!!!
同时windows和linux的编码方式不同,所以输入中文的话可能会乱码。