网络聊天系统
这个项目旨在通过学习网络编程和使用Qt框架创建一个简单的网络聊天系统,包括一个用户客户端和一个管理员服务器,以实现基本的消息发送和接收功能,并了解如何建立客户端与服务器之间的通信。
- C++
- Qt
- 连接到服务器
- 发送消息给服务器
- 接收来自服务器和其他客户端的消息
- 关闭与服务器的连接
- 启动服务器并监听端口
- 接受客户端连接,并显示在线用户数
- 接收来自客户端的消息并广播给所有客户端
- 监听客户端断开连接并更新在线用户数
- 连接到服务器
- 通过
QTcpSocket
类的connectToHost()
函数连接到服务器。 - 使用C++11的lambda表达式简化信号槽连接的书写,并且方便地捕获了外部的局部变量。
- 通过
- 发送消息给服务器
- 通过
QTcpSocket
类的write()
函数将消息发送给服务器。 - 获取要发送的消息:从UI界面获取用户输入的消息。
- 通过
- 接收来自服务器和其他客户端的消息
- 通过
QTcpSocket
类的readyRead
信号监听服务器发送的消息。 - 接收消息后,更新UI界面显示。
- 通过
- 关闭与服务器的连接
- 调用
QTcpSocket
类的close()
函数关闭与服务器的连接。 - 使用C++11的lambda表达式简化信号槽连接的书写,并且方便地捕获了外部的局部变量。
- 调用
- 启动服务器并监听端口
- 调用
QTcpServer
类的listen()
函数开始监听连接请求。 - 通过
QTcpServer
类的newConnection
信号接收客户端连接。
- 调用
- 接受客户端连接,并显示在线用户数
- 在
newConnection
信号的槽函数中,使用nextPendingConnection()
函数获取连接套接字对象,即QTcpSocket
对象。 - 将连接套接字对象添加到列表中,同时更新在线用户数,并更新UI显示。
- 在
- 接收来自客户端的消息并广播给所有客户端
- 通过
QTcpSocket
类的readyRead
信号监听客户端发送的消息。 - 接收消息后,使用循环将消息发送给所有连接的客户端。
- 通过
- 监听客户端断开连接并更新在线用户数
- 在
disconnected
信号的槽函数中,移除断开连接的套接字对象,更新在线用户数,并更新UI显示。
- 在
- Qt框架
- QTcpServer类的listen()函数
- QTcpSocket类的connectToHost()、write()、readyRead()、close()函数
- 信号-槽机制:connected、disconnected信号