Skip to content

fdkang/QTcpchat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

网络聊天系统

目的

这个项目旨在通过学习网络编程和使用Qt框架创建一个简单的网络聊天系统,包括一个用户客户端和一个管理员服务器,以实现基本的消息发送和接收功能,并了解如何建立客户端与服务器之间的通信。

编程语言

  • C++

框架

  • Qt

用户客户端功能

  1. 连接到服务器
  2. 发送消息给服务器
  3. 接收来自服务器和其他客户端的消息
  4. 关闭与服务器的连接

管理员服务器功能

  1. 启动服务器并监听端口
  2. 接受客户端连接,并显示在线用户数
  3. 接收来自客户端的消息并广播给所有客户端
  4. 监听客户端断开连接并更新在线用户数

具体实现

用户客户端实现

  • 连接到服务器
    • 通过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信号

main

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published