学而不思则罔,思而不学则殆。学习和思考是相辅相成的,通过这几天对网络编程的学习,收获颇丰。接下来我将利用Qt做的一个以TcpIp协议为传输方式的简单的局域网聊天服务端与大家分享下:
首先谈谈我个人对Tcp协议的理解:Tcp就是网上购物,买家和买家之间的物品传递,快递公司的扮演。快递公司将卖家所要寄出的物品进行包装,给予独特的号码,并从卖家获取目的地地址,得知这些明确信息后准确将物品送到买家,买家签收后,卖家通过快递单号查询到买家签收的消息。
其次是这个简单局域网聊天服务器的创建思路。如下图是思路的框图:
一个服务器的建立,必须要有对外双向通讯的接口就是套接字(socket),所以需要建一个Mysocket的类,这样才可以将不同客户端的消息发给其他客户端。之后还需要再创建一个Myserver的类,将每个客户端发送的消息通过Mysocket发送信号被接受。然后在每个客户端对应的每个Myserver中将各自发送的信号发送给其他客户端,并再发送给server在UI界面上显示。如图:在Mysocket和Myserver以及Myserver和server之间的联系都是通过发送信号,并利用槽函数进行处理,所以这整个程序的关键是合理运用信号和槽函数,将信息顺利传达。
然后是程序的展示和一些关键点的处理方式。
//========================Mysocket.c=============================//
MyTcpSocket::MyTcpSocket(QObject *parent) :/*在构造函数中进行信号和槽函数的连