Qt 局域网聊天

43 篇文章 14 订阅

TCP (Transmission Control Protocol) 传输控制协议 . 面向连接和数据流的可靠传输协议 .

使用的是客户端 / 服务器模式 ….

 

QT QTcpSocket 来编写客户端程序 , QTcpServer 来编写服务器端程序 ….

 

我们通过 QTcpServer listen(QHostAddress::Any,port) 函数来进行端口的监听 , 一旦发现客户端的连接请求 , 就会发出 newConnection() 信号 这样绑定上相应的槽函数就可以进行数据的发送了 ….

 

客户端 QTcpSocket 一旦有数据到来就会发出 readyRead() 信号 , 我们可以关联此信号进行数据的接收

 

Tcp 连接示例图 :

下面举一个小例子 , 来实现服务器端到客户端的连接

 

服务器端的实现 :

 

 

  

 

 

客户端的实现 :

 

 

QTcpServer  QTcpStock 之间的工作原理是这样的 ...

首先由 QTcpServer 创建 一个监听 listen(hostAddress,port) ...  这样就对此 prot 进行了监听 ....

 

然后启动客户端的连接 connectToHost(hostAddress,port).... 当服务器端接收到 客户端的连接时 , 首先会触发 QTcpServer

incomingConnection( int socketDescriptor )  消息 ... 这时就可以将当前连接的客户端的 ID 号加入到服务器端的客户端列表里进行维护了 ...( 不知道这样理解对不对 ???)

 

当客户端发送消息到服务器端时 .. 就会触发 QTcpServer updateClients() 消息 ... 然后服务器通过发送 updateServer() 消息通知服务器端更新信息 ... 然后再通过已有的客户端列表 , 向已连接的客户端写回信息 ... 这时就会触发客户端的 readMessage() 函数 ... 将接收到的消息显示在客户端 ...

 


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值