17.飞鸽传书小项目

飞鸽传书通信模板
1
通信结构体
enum{
LOGIN=0x1, //登录
CHAT, //聊天
QUIT, //退出
SERVER_ALIVE, //测试服务器是否正常
NEW_USER, //服务器告诉客户端新用户登录/已存在的新用户
};
typedef struct{
int type;//消息类型
int id; //id 值–用户登录后服务器会分配给用户一个 ID 值
char name[N]; //用户名
int sex; //性别 1:男 0:女
char text[M];//消息正文
}MSG_QT;
#define MSG_QT_LEN sizeof(MSG_QT)
#define N 32
#define M 256
2
通信协议(基于 SOCKET 的 UDP 通信)
2.1 登录操作(客户端–>服务器)
客户端登录后需要先给服务器发送一个数据报,内容需要包含:
type = LOGIN name=名字 sex=性别
2.2 连接测试(服务器–>客户端)
登录消息发送完成后,服务器会立马回复一个数据报,内容如下
type = SERVER_ALIVE
id=服务器分配的 ID
备注:此 ID 是服务器自动分配给新登录的客户端的,类似与注册 QQ 号过程。
2.3 用户列表获取(服务器–>客户端)
如果服务器连接正常,客户端会收到若干个数据包,格式如下
type = NEW_USER,id=新好友的 ID,name=好友的名字,sex=好友的性别备注:这种类型数据报可能有两种情况:首次登录时候,可能已经有好多好友已经登录了,此时服务器会
发送若干个数据报;当你登录完成后,此时如果有一个新的好友登录,此时服务器只会发送一个数据报告
知新的好友信息。
2.4 消息发送(客户端–>服务器)
给好友发消息格式如下:
type = CHAT,id = 要发给的好友的 ID, text=正文消息(先用英文)
2.5 消息接收(服务器–>客户端)
接收好友的消息格式如下:
type = CHAT,id = 发送给你的好友的 ID,text = 正文消息(先用英文)
2.6 好友下线(服务器–>客户端)
好友下线后服务器会发送好友 ID 数据报,格式如下:
type = QUIT,id = 下线好友的 ID
2.7 退出(客户端–>服务器)
退出登录需要给服务器发送一个数据报,格式如下:
type = QUIT,id = 自己的 ID
3
知识点
3.1 输入个人信息后,如何弹出新界面
调用 show 方法。
3.2 如何使用通信协议中结构体进行 UDP 通信
client->writeDatagram((char *)&msg, MSG_QT_LEN,
GlobalVal::serverAddr, GlobalVal::port);
recvSize = client->readDatagram((char *)&msg, recvSize, &sender,
&senderPort);
3.3 登录需要验证服务器是否正常,登录后要进行数据收发,如何进行封装客
户端
将所有的客户端操作都封装到一个类中,所有数据收发都封装到此类中去。4
Server 运行
1.解压
2. 打开 cmd

发布了10 篇原创文章 · 获赞 14 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_40083589/article/details/94434756