Qt 的 tcp服务端讲解

TCP

TCP : (Tramsmission Control Protocl)传输控制协议,一种面向连接的,可靠的,基于字节流的传输层通信协议。

本文目标

实现一个简单的服务器,可以接受客户端的信息

使用类库

QTcpServer : 实现服务端的端口监听,可以提供一种服务(也可以自己去编写)。
QTcpSocket : 实现套接字类,有消息的封装,可读取和写入。

接下来介绍两个关于windows的命令行知识

1. netstat -ano

这个命令是针对于windows系统下查看所有的端口占用情况。

  • 首先,cmd 打开命令行窗口,输入netstat -ano,会出现关于本机端口一些连接情况,这快我们主要讲解一下关于TCP的知识
    -在这里插入图片描述
    针对于这块本地地址 0.0.0.0:135

0.0.0.0是表示可以代表任何IP进行访问。
135则表示的是开启的端口

在这里插入图片描述
针对于这块 127.0.0.1:1001

127.0.0.1表示的是自己的网卡地址
1001则表示的是开启的端口号

当然这块如果检查自己电脑网卡是否正常可以 通过 ping 127.0.0.1 来进行检查

2.telnet

Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器

今天我们通过使用 telnet 127.0.0.1 端口号 来测试我们编写的服务端
前提是必须要在windows ,控制面板,程序那块把电脑的telnet client安装上

切入今天的正题,用qt编写一个tcp服务端

在这里插入图片描述
在这里插入图片描述
创建完成后,紧接着,在工程文件中引入network
在这里插入图片描述
第二步,加入类文件,server类
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
第三步:头文件需要更改server,应该继承 QTcpServer,并且在server的源文件也要更改,如下
在这里插入图片描述
在这里插入图片描述

重点来了

1、首先开启端口服务,使用QTcpServer的listen,开启指定的端口。
这块目的是:外人发过的消息可以被这个程序接收到,并且使用 netstat -ano进行检测。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2、通过重写 incomingConnection( qintptr handle);
让新用户加入进来,这个方法是要引入QTcpSocket类,并且这个方法是虚函数,需要用户去重载

在这里插入图片描述
在这里插入图片描述
这块开始测试,因为小编先写好代码,这块就用原先写好的代码来进行演示
先cmd,使用telnet 127.0.0.1 8888 进行测试

在这里插入图片描述
在这里插入图片描述
3、要将当前对象的连接对象存入socket对象中
在这里插入图片描述
4、监听sock对象的readyread()消息来处理最后的消息。(这块我们要说的是一个函数可以同时继承他父类的方法)

在这里插入图片描述
在这里插入图片描述
5、读取消息,并且通过if语句排除无用字符
在这里插入图片描述

最后整体测试,整个简单的TCP服务端编写完成

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最后整体完成,效果还不错。有哪些函数不懂,进入帮助文档里面,有详细的介绍。

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Qt是一个跨平台的C++应用程序框架,它提供了丰富的库和工具来帮助开发者创建各种类型的应用程序,包括网络通信应用。 在Qt中实现TCP服务端和客户端的通信非常简单。首先,我们需要创建一个QTcpServer对象来作为服务端,该对象负责监听客户端的连接请求。接下来,我们需要为QTcpServer对象绑定一个IP地址和端口号,以便客户端能够连接到该地址和端口。当有新的客户端连接时,QTcpServer对象会发出newConnection()信号。 在服务端的槽函数中,我们可以使用QTcpServer的nextPendingConnection()函数获取新连接的QTcpSocket对象,该对象用于和客户端进行通信。我们可以在该对象上发送和接收数据,以实现服务端和客户端之间的数据交互。 接下来,我们需要创建一个QTcpSocket对象作为客户端,该对象负责和服务端建立连接。我们需要使用connectToHost()函数来指定要连接的服务端的IP地址和端口号。一旦连接成功,QTcpSocket对象会发出connected()信号。 在客户端的槽函数中,我们可以使用QTcpSocket对象发送和接收数据。我们可以使用write()函数发送数据,使用readyRead()信号和read()函数接收数据。 通过这种方式,我们可以在服务端和客户端之间进行双向的数据通信。服务端可以同时接受多个客户端的连接,每个客户端都可以和服务端进行独立的数据交互。 总的来说,使用Qt实现TCP服务端和客户端通信非常方便。通过使用QTcpServer和QTcpSocket类,我们可以轻松地建立连接,发送和接收数据。这种通信方式可以应用于多种场景,如实时聊天、远程控制等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悟道xn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值