网络聊天室项目说明
项目的目的和意义
该聊天室项目为利用linux下C语言网络编程相关知识,采用Server/Client,即服务器与客户端的基本框架实现。整个项目涉及了socket套接字,线程,嵌入式数据库sqlite3,select模型等多个知识模块,服务器整体采用select模型,并不断监听客户端,客户端中起一个线程,用来实时接受服务器发送的信息。
该聊天室项目可模拟当今的聊天工具中的各个功能,实现最基本的互相发送信息,群发消息,登陆注册等功能。完成该项目可很大的提高我们初学者的编程能力,以及面对出现的各种bug的应对解决能力,是一个提升自我的很好途径。
项目的需求分析
1.聊天室支持连接多个客户端,采用select模型
2.客户端与服务器的连接,接受信息
3.账号网名的注册,登录,并存档
4.显示所以在线好友
5.服务器与客户端的通信,实现信息转发(私聊,群聊)
6.实现管理员权限,可进行禁言,踢人等功能
7.发送表情,常用语句
8.每个用户都建立各自的聊天记录文件,服务器保存所以用户的聊天记录
项目的技术方案设计
服务器socket和select
首先建立socket,用bind进行绑定后,用listen进行对客户端的监听。在一个while(1)循环中,采用select对客户端进行操作,将所以文件描述符放到readfd中,如果是有新的客户端要进行连接,即sockfd有动静,就开始accept操作,将新的fd放到readfd中