C++网络编程(聊天室项目)

聊天室项目

功能:创建仿微信聊天室,完成群聊加私聊功能



前言

服务器任务:

  1. 与客户端进行连接
  2. 将群聊信息发给各个客户端,将私聊信息发送给指定客户端

客户端任务:

  1. 连接服务器
  2. 发送信息给服务器或从服务器接受消息

一、服务器实现过程

一、初始化过程

  1. 建立套接字监听是否有客户端请求连接。socket()
  2. 调用bind()函数绑定服务器地址
  3. 调用Listen()函数设置同时与客户端建立连接的个数
  4. 调用epoll_create()函数创建监听红黑树,将套接字lfd挂到树上

二、接发信息过程

定义sendBroadCastMessage()函数。函数功能是与客户端完成交互。通过客户端发送内容,解析出前两个字节判断信息类型是否为广播还是私聊。然后将解析完的信息发送给对应类型的客户端。同时将连接进来的客户端套接字挂上监听红黑树,对其完成实时监听。

二、客户端实现过程

  1. 调用accept()函数与服务器进行连接
  2. 创建管道,用于父子进程间通信
  3. 调用epoll_create()函数创建监听红黑树,并将与服务器建立连接的套接字以及管道的读端挂到红黑树上进行实时监听
  4. 调用fork()函数创建子进程
    子进程任务:负责得到用户输入,通过管道传送到父进程
    父进程任务:负责与服务器完成通信。若监听到的是服务器发送的信息,则将信息显示;若监听到的是子进程管道信息,则将其接受并发送给服务器。

实现画面截图

在这里插入图片描述

完整代码百度网盘自提(代码带超详细注释)
链接:https://pan.baidu.com/s/1V15zicdy5c7yZNLN3a24yA
提取码:ltp7

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值