1. Qt连接代码

void Client::toConnect()
{
if (isConnecting || QAbstractSocket::ConnectingState == tcpSocket->state())
return;
// tcpSocket->abort();
QString ip = SERVER_IP;
quint16 port = SERVER_PORT;
// qDebug()<<"服务器IP:"<<ip<<", 端口号:"<<port;
tcpSocket->connectToHost(QHostAddress(ip), port); //核心语句
// tcpSocket->waitForConnected();
}

这里省略Linux处理代码...

2. 问题分析(按照顺序排除)

2.1 服务器IP是否能被Ping通?

打开cmd窗口(①win+r,然后输入cmd回车。②或直接搜索框直接搜索cmd)

ping 服务器地址/域名

2.2 客户端中的服务器IP和Port是否填写正确?

Qt中连接服务器的两个函数的函数原型:

注:quint16 = unsigned short

(1)第一个参数:QString形式的IP,第二个参数:quint16的参数,最后两个参数不需要填。

[virtual] void QAbstractSocket::connectToHost(const QString &hostName,
quint16 port,
QIODevice::OpenMode openMode = ReadWrite,
QAbstractSocket::NetworkLayerProtocol protocol = AnyIPProtocol)

(2)第一个参数:QHostAddress形式的IP,第二个参数:quint16的参数(quint16 = unsigned short),最后两个参数不需要填。

[virtual] void QAbstractSocket::connectToHost(const QHostAddress &address,
quint16 port,
QIODevice::OpenMode openMode = ReadWrite)

2.3 Linux的代码处理是否正确?

自己先在Linux上编写几个客户端测试测试,看看所写的服务器代码是否能够正确处理客户端连接。

2.4 Linux服务器端口未开放(这个很重要!!!)

有两种解决方法:①开放端口;②关闭防火墙

2.4.1 开放端口(一劳永逸,推荐!)

先列举需要用到的命令:

(1)查看所有已开放端口:firewall-cmd --list-port

(2)查看某个端口是否开放:firewall-cmd --query-port=端口号/协议(tcp/udp)

(3)开启端口:firewall-cmd --zone=public --add-port=端口号/协议(tcp/udp) --permanent

(4)移除端口:firewall-cmd --zone=public --remove-port=端口号/协议(tcp/udp) --permanent

(5)重启防火墙:firewall-cmd --reload

-->Linux防火墙与端口操作命令

实例说明:开放端口7799去用于客户端通信

第一步:开放端口7799用于TCP通信

[root@VM-4-2-centos ~]# firewall-cmd --zone=public --add-port=7799/tcp --permanent

第二步:重启一下防火墙

[root@VM-4-2-centos ~]# firewall-cmd --reload

第三步:添加服务器的防火墙规则,这一步不弄也是连接不上的

步骤分析:

1)第三步不弄的话也是连接不上的...,因为没添加务器的防火墙规则。

2)如果只是弄了第三步,那也是连接不上的...,因为使用firewall-cmd --list-port 命令是查不到服务器添加的防火墙规则。

2.4.2 关闭防火墙(开放所有端口,不推荐!)

这里也有两种方法,第一种麻烦但是相对安全,第二种方便但是很不安全。

方法一:每次通信时都去关闭防火墙

方法二:关闭防火墙之后,再禁用防火墙自启,防止防火墙自启导致端口无法使用

作用 命令
关闭防火墙 systemctl stop firewalld
禁用防火墙自启 systemctl disable firewalld
启动防火墙 systemctl start firewalld
启动防火墙开机自启 systemctl enable firewalld

Qt连接不上Linux服务器?的更多相关文章

  1. Xshell(远程)连接不上linux服务器(防火墙介绍)

    一.原因 远程(ssh)连接不上linux服务器的大多数原因都是因为本地服务器的防火墙策略导致的,因此我们想ssh远程能够连接上服务器,有两种方法: 修改防火墙策略 关闭防火墙 二.防火墙服务介绍 1 ...

  2. navicat连接不上Linux服务器上的MySQL

    1.首先确定你的linux已经关闭防火墙 详细操作点这里: 如果是公司服务器防火墙比较重要不能关闭,那就麻烦点了,需要在防火墙的配置文件下配置属性. 如果还不能解决,请继续往下看. 2.如果是云服务器 ...

  3. navicat连接不上Linux服务器上的mysql的解决办法

    一开始,心情是沉痛的,截图如下: 转载请注明出处:https://www.cnblogs.com/NaughtyCat/p/how-to-connect-to-mysql-on-linux-by-na ...

  4. 线上Linux服务器运维安全策略经验分享

    线上Linux服务器运维安全策略经验分享 https://mp.weixin.qq.com/s?__biz=MjM5NTU2MTQwNA==&mid=402022683&idx=1&a ...

  5. 【微学堂】线上Linux服务器运维安全策略经验分享

      技术转载:https://mp.weixin.qq.com/s?__biz=MjM5NTU2MTQwNA==&mid=402022683&idx=1&sn=6d403ab4 ...

  6. SSH连接不上Linux的解决方法

    SSH连接不上Linux的解决方法: 连续弄了几次,今天早上终于把SSH连接虚拟机连接不通的问题解决了. 先简单说下概要: 主机装的是XP系统,虚拟机用的是red hat Linux. 我用的是nat ...

  7. ssh远程连接不上linux

    远程连接工具是:Xmanager Enterprise 5-->Xshell linux 发行版本是:CentOS-6.3-x86_64 问题:ssh一直都可以远程连接上linux,一段时间后突 ...

  8. secureCRT连接不上linux的当中一个最大的原因

    之前secureCRT一直连接不上linux(我的linux版本号是Ubuntu14.04.2.用的是VirtualBox).在网上找了各种办法.但是都解决不了我的问题! 网上的解决的方法不是说没有开 ...

  9. windows客户端如果通过cmd窗口连接到远程linux服务器,可以使用telnet;

     linux系统打开telnet端口的方法 2016-03-11 16:02:25 标签:linux telnet 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明. ...

  10. 第一次项目上Linux服务器(一:远程连接服务器)

    一.准备工作 1.Linux服务器一台,以及服务器ip.用户名.密码 2.安装xfttp和xshell软件,资源链接,百度云链接:https://pan.baidu.com/s/1vwnlbBpmjX ...

随机推荐

  1. Keil 2032 license 解决方法(keygen)

    https://pan.baidu.com/s/1nH_KrsHoLEJlJQKhfIoXHA

  2. 3.17阿里Java后端,电商 sku 的全排列算法

    3.17阿里Java后端 字典 有英文字典:Map<Character, String[]>,示例如下: a : [a, an] b : [bus, bird] c : [car, can ...

  3. fiddler everywhere 抓包工具的使用

    1.功能 手机微信或者浏览器访问网址都可以在fidder里面抓到http请求 2.配置 电脑fidder setting->允许安卓手机远程访问 安卓手机 设置->wifi代理 主机名是电 ...

  4. Windows系统Redis集群搭建

    一.参考网址 https://mp.weixin.qq.com/s/ImdEJTdAmCFJsT55rici0Q 二.Redis版本 注意:搭建windows版的redis集群,redis的版本需要5 ...

  5. Linux 获取内网IP地址脚本

    IP=$( /sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr: ...

  6. Vant+小程序+购物车实例

    图片实例,看是否是您所需要的喔.... 扫码小程序可看实例操作,有啥问题也可扫码加群,很希望可以帮助到你喔!           HTML部分: <view class="cart&q ...

  7. daimayuan第二课(1.二叉树的遍历,2.二叉树的最近公共祖先,3.二叉搜索树)

    二叉树的最近公共祖先: 1:概念:就是两个节点在这棵树上深度最大的公共的祖先节点. 换句话说,就是两个点在这棵树上距离最近的公共祖先节点. 2:因为是基础课,所以tarjan和倍增lca就留到中级课再 ...

  8. suse 关闭 图形界面

    图形界面 /etc/systemd/system/default.target -> /usr/lib/systemd/system/graphical.target ln -s /usr/li ...

  9. bash transpose csv

    transpose() { awk ' BEGIN { FS = ","; OFS = ","; } { if (max_nf<NF) max_nf=NF ...

  10. 【JIRA】jira issue reindex

    参考文档: https://community.atlassian.com/t5/Marketplace-Apps-Integrations/Scriptrunner-Listener-Reindex ...