7 07_局域网聊天软件项目实战
目录
7.1 01_功能
7.1.1 01_介绍
功能。
局域网聊天软件界面。 顶部有一个用户昵称编辑框。 接着是用户输入待发送信息的编辑框, 然后是发送按钮。 底部是用户已经发送过的信息, 以及用户接收到的其它用户发送的信息。
7.2 02_设计
7.2.1 01_介绍
设计。
在QT界面设计器中 顶部昵称编辑框QLineEdit。 待发送信息编辑框QLineEdit。 发送按钮QPushButton。 底部历史记录文本框QTextBrowser。
7.3 03_实现
7.3.1 01_窗口类型
窗口类型。
窗口界面类型ButianyunMainWindow。 定义了私有函数addToHistory: 将字符串加入到历史记录中。 定义了槽函数on_pushButton_clicked: 发送按钮点击处理。 定义了槽函数udpReadyRead: UDP套接字数据读取已就绪。 定义了UDP套接字变量udp, 类型是QUdpSocket。
7.3.2 02_构造函数
构造函数。
调用QUdpSocket类型的bind函数, 绑定本机的UDP端口12345。 指定了SharedAddress和ReusedAddressHint选项, 表示在同一个主机上可以有多个进程使用这个端口。 建立了udp的readyRead信号 和槽函数udpReadyRead的连接。 当UDP套接字上收到信息时, 将调用udpReadyRead函数。
7.3.3 03_发送信息
发送信息。
首先拼接待发送信息, 包含昵称和待发送的数据。 然后构造网络数据包。 目标地址设定为广播地址, 端口号为12345。 接着使用writeDatagram函数 发送UDP网络数据包, 并将发送记录加入到历史记录中。
7.3.4 04_接收信息
接收信息。
调用QUdpSocket类型的 hasPendingDatagrams函数 判断是否还有没有读取的数据包, 如果有则调用receiveDatagram函数 读取数据包。 如果读取成功, 则将读取到的信息加入到历史记录中。