首页 > 系统相关 >Qt连接不上Linux服务器?

Qt连接不上Linux服务器?

时间:2023-03-15 23:34:00浏览次数:38  
标签:Qt -- cmd 端口 防火墙 不上 firewall Linux port

目录

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和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.2 Linux的代码处理是否正确

这里自己在Linux上编写几个客户端测试测试


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

有几种方法拒绝

方法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通信

firewall-cmd --zone=public --add-port=7799/tcp --permanent

第二步:重启一下防火墙

firewall-cmd --reload

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

image

步骤分析:

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

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


方法2:关闭防火墙,去开放端口

关闭防火墙命令: systemctl stop firewalld

或者

直接禁用防火墙自启: systemctl disable firewalld --- 防止防火墙自启导致端口无法使用

恢复操作:

启动防火墙命令: systemctl start firewalld

启动防火墙开机自启: systemctl enable firewalld

标签:Qt,--,cmd,端口,防火墙,不上,firewall,Linux,port
From: https://www.cnblogs.com/swansfight/p/17220649.html

相关文章

  • Linux基本指令(上)
    写在前面好久没有写博客了,学校快要期末考试了,这个是在零碎的时间的拼凑出来了的。闲言少序,在了解了Linux的历史背景后,我们需要开始初步开始学习如何使用Linux系统.操作系统......
  • Linux基本指令(中)
    写在前面今天我们首要的目的就是把我们常用的指令和大家分享完,我们添加一些管道和压缩的命令,指令这个部分到这里就基本结束了,当然,这些都是最基本的,后面我们用到其他指......
  • Linux防火墙与端口操作命令
    目录Linux防火墙与端口操作命令1.防火墙操作命令2.端口操作命令3.CentOS7下安装firewallLinux防火墙与端口操作命令CentOS7系统1.防火墙操作命令(1)查看防火墙状......
  • Linux用户权限修改及ssh远程登陆
    问题产生:MobaXterm中ssh登录后,ftp文件传输服务器登陆账户权限不被允许进行文件上传,Mobaxterm出现permissiondenied的解决办法解决方案:1、提升登录账户的权限为root权限(......
  • Linux查看、修改SELinux的状态
    SELinux(Security-Enhanced ​​Linux​​)是美国国家安全局(NSA)对于强制访问控制的实现,是 ​​linux​​历史上最杰出的新安全子系统。但是我们一般都不用它,因为它管的......
  • linux目录详解
      /bin存放二进制可执行文件/etc存放系统管理和配置文件/home存放所有用户文件的根目录,是用户主目录的基点,比如用户user的主目录就是/ho......
  • linux安全基线配置
    【shell脚本分享】linux安全基线配置全解析点击关注......
  • linux-screen终端会话后台运行
    screenlinux终端关闭,也不影响终端里命令的正常运行,就需要screen及tmux特点会话恢复多窗口会话共享install&&usedyuminstall-yscreen//状态说明Attached......
  • Qt项目的构建(编译)、运行与调试
    Qt中的项目类型(二) Qt中的项目类型(二)_qt项目_SuninRobot的博客-CSDN博客 写的很好,能学到很多Qt项目的构建(编译)、运行与调试(三) Qt项目的构建(编译)、运行与调......
  • [Linux]将ArchLinux安装到U盘并保留通用空间
    将ArchLinux安装到U盘并保留通用空间几个月前入门Arch的时候上网搜了不少安装教程,同时由于当时硬盘空间不太够于是就打算安装到U盘上,也因此踩了不少坑。但128G的U盘都拿......