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 ...
随机推荐
- Jmeter添加Base64Img函数支持图片转换为Base64编码
将JmeterBase64-1.0-SNAPSHOT放置到\lib\ext下即可: 直接使用即可. 制作方式: Jar包通过IntelliJ IDEA创建maven工程后,导出package:
- 后台http请求
HttpResponse response = HttpContext.Current.Response; response.Buffer = true; response.Clear(); resp ...
- 论MVC架构设计及其应用
论MVC架构设计及其应用 张紫诺1 (1. 位石家庄铁道大学,河北 石家庄 050000) 摘要:随着信息化建设的发展,人们愈发需要考虑采用一种良好的架构实现快速构建企业应用程序的目标.而MVC架构正 ...
- python更新pip报错pip._vendor.urllib3.exceptions.ProxySchemeUnknown: Not supported proxy scheme None
更新pip报错: 看到最后一行很明显是proxy的问题,查看cmd下的代理 将代理删掉重启cmd执行命令就不会报错了
- spring为什么默认单例模式
单例bean的优势 由于不会每次都新创建新对象所以有一下几个性能上的优势. 1.减少了新生成实例的消耗 新生成实例消耗包括两方面,第一,spring会通过反射或者cglib来生成bean实例这都是耗性 ...
- Linux下 Jdk版本切换
安装: 甲骨文官网下jdk 上传到云服务器 解压: tar -zxvf jdk-7u79-linux-x64.tar.gz 设置环境变量 vim /etc/profile 末尾加上 export JA ...
- win10系统格式化后进行虚拟分区
1. 目的 目前win10磁盘分区多数人采用两种方式: 1:只分一个C盘,文件在C盘以目录区分. 缺点:所有文件都在一起,区分查找比较麻烦. 2:物理分区,分多个盘,如C,D,E等等 缺点:容量固定, ...
- pip下载时使用国内镜像 设置pip.ini文件
https://blog.csdn.net/u011107575/article/details/109901086 https://www.python.org/ftp/python/https:/ ...
- 【随笔】Tomcat部署图片服务器Server.xml配置记录
在tomcat应用conf/server.xml文件的标签中添加下面内容: <Service name="imageService"> <!--分配8089端口 ...
- 深入理解css 笔记(9)
模块化 CSS 是指把页面分割成不同的组成部分,这些组成部分可以在多种上下文中重复使用,并且互相之间没有依赖关系.最终目的是,当我们修改其中一部分 css 时,不会对其他部分产生意料之外的影响. ...