Qt连接不上Linux服务器?
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
实例说明:开放端口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服务器?的更多相关文章
- Xshell(远程)连接不上linux服务器(防火墙介绍)
一.原因 远程(ssh)连接不上linux服务器的大多数原因都是因为本地服务器的防火墙策略导致的,因此我们想ssh远程能够连接上服务器,有两种方法: 修改防火墙策略 关闭防火墙 二.防火墙服务介绍 1 ...
- navicat连接不上Linux服务器上的MySQL
1.首先确定你的linux已经关闭防火墙 详细操作点这里: 如果是公司服务器防火墙比较重要不能关闭,那就麻烦点了,需要在防火墙的配置文件下配置属性. 如果还不能解决,请继续往下看. 2.如果是云服务器 ...
- navicat连接不上Linux服务器上的mysql的解决办法
一开始,心情是沉痛的,截图如下: 转载请注明出处:https://www.cnblogs.com/NaughtyCat/p/how-to-connect-to-mysql-on-linux-by-na ...
- 线上Linux服务器运维安全策略经验分享
线上Linux服务器运维安全策略经验分享 https://mp.weixin.qq.com/s?__biz=MjM5NTU2MTQwNA==&mid=402022683&idx=1&a ...
- 【微学堂】线上Linux服务器运维安全策略经验分享
技术转载:https://mp.weixin.qq.com/s?__biz=MjM5NTU2MTQwNA==&mid=402022683&idx=1&sn=6d403ab4 ...
- SSH连接不上Linux的解决方法
SSH连接不上Linux的解决方法: 连续弄了几次,今天早上终于把SSH连接虚拟机连接不通的问题解决了. 先简单说下概要: 主机装的是XP系统,虚拟机用的是red hat Linux. 我用的是nat ...
- ssh远程连接不上linux
远程连接工具是:Xmanager Enterprise 5-->Xshell linux 发行版本是:CentOS-6.3-x86_64 问题:ssh一直都可以远程连接上linux,一段时间后突 ...
- secureCRT连接不上linux的当中一个最大的原因
之前secureCRT一直连接不上linux(我的linux版本号是Ubuntu14.04.2.用的是VirtualBox).在网上找了各种办法.但是都解决不了我的问题! 网上的解决的方法不是说没有开 ...
- windows客户端如果通过cmd窗口连接到远程linux服务器,可以使用telnet;
linux系统打开telnet端口的方法 2016-03-11 16:02:25 标签:linux telnet 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明. ...
- 第一次项目上Linux服务器(一:远程连接服务器)
一.准备工作 1.Linux服务器一台,以及服务器ip.用户名.密码 2.安装xfttp和xshell软件,资源链接,百度云链接:https://pan.baidu.com/s/1vwnlbBpmjX ...
随机推荐
- ethcat开发记录 三
一.关于controlword的控制 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 保留 待定 暂停 故障复位 模式有关 伺服使能 快停 上电 伺服准备好
- AIO基本编写
一. public class Server { //线程池 private ExecutorService executorService; //线程组 private AsynchronousCh ...
- 关于Java字符串、字符与数字之间的相互转换
一.数字转字符串 //将整个数字转化为字符串 int i=456; //方法一 String str1=Integer.toString(i); System.out.println(str1); / ...
- docker命令、简单创建镜像、dockerfile实战、Dockerfile语法、镜像分层、Volume介绍
docker的常用命令: docker pull 获取imagedocker build 创建imagedocker images 列出imagedocker run 运行containerdocke ...
- Spring之IOC(控制反转)入门理解
在面向对象编程中,我们经常处理处理的问题就是解耦,程序的耦合性越低表明这个程序的可读性以及可维护性越高(假如程序耦合性过高,改一处代码通常要对其他地方也要做大量修改,难以维护).控制反转(Invers ...
- 【APT】响尾蛇(SideWinder)Hta文件自动解密C2
前言 一个用于从SideWinder APT组织常用的hat文件中解密C2链接地址的Python脚本,示例代码对一些老的hat文件效果比较好,新的样本可能需要根据实际情况修改下,最初是用于对VT上命中 ...
- Flink笔记
高可用(HA):直白来说就是系统不会因为某台机器,或某个实例挂了,就不能提供服务了.高可用需要做到分布式.负载均衡.自动侦查.自动切换.自动恢复等. 高吞吐: 单位时间内,能传输的数据量,对应指标就是 ...
- Debug --> 箱线图
箱线图主要用于反映原始数据分布的特征,还可以进行多组数据分布特征的比较. 箱形图最大的优点就是不受异常值的影响,能够准确稳定地描绘出数据的离散分布情况,同时也利于数据的清洗. 在箱图中,最上方和最下方 ...
- mysql和nacos都部署在docker中,ip该写哪个
docker run -d \ -e MODE=standalone \ -e SPRING_DATASOURCE_PLATFORM=mysql \ -e MYSQL_SERVICE_HOST=172 ...
- 06 HBase安装与伪分布式配置
1.下载压缩文件 2.解压 3.修改文件夹名 4.修改文件夹权限 5.配置环境变量 6.伪分布式配置文件 7.启动HDFS,启动Hbase 8.进入shell界面 9.停止Hbase,停止HDFS运行