上一篇我们已经讲了如何搭建一个多线程的服务器模型,可以支持多个客户端同时连接服务器,本篇我们来实现多个客户端,如何实现向服务器注册信息,并实现登录的功能。
接着上一篇的实例代码继续增加功能。要实现注册和登录功能,那么我们就必须要让服务器和客户端在交互数据包的时候按照统一的格式收发信令。信令格式
- //C/S通信的结构体
- struct protocol{
- int cmd; //命令
- int state; //存储命令返回信息
- char name[32]; //用户名
- char data[64]; //数据
- };
命令类型:信令格式中命令定义如下:
- /*cmd*/
- #define BROADCAST 0X00000001 //广播数据
- #define PRIVATE 0X00000002 //私聊
- #define REGISTE 0X00000004 //注册账号
- #define LOGIN 0X00000008 //登录
- #define ONLINEUSER 0X00000010 //显示在线用户
- #define LOGOUT 0X00000020 //退出
在线用户信息服务器需要维护所有用户信息,需要知道用户是否在线,是否注册。
- //在线用户
- struct ONLINE{
- int fd; //-1:该用户下线 >0:该用户已经登录,对应的套接字
- int flage; //-1 该条目没有用户信息 1:该条目有用户注册信息
- char name[32]; //注册的用户名字
- char passwd[32]; //用户名密码
- };
- struct ONLINE online[MAX_USER_NU