上海网站建设百度推广公司哪家好,苏州招聘网站制作,网站推广话术,运营网站是多少基于终端的
UDP云聊天系统 开发环境
Linux 系统GCCUDPmakefilesqlite3 功能描述
通过 UDP 网络使服务器与客户端进行通信吗#xff0c;从而实现云聊天。 Sqlite数据库
用户在加入聊天室前#xff0c;需要先进行用户登录或注册操作#xff0c;并将注册的用户信息#xf… 基于终端的
UDP云聊天系统 开发环境
Linux 系统GCCUDPmakefilesqlite3 功能描述
通过 UDP 网络使服务器与客户端进行通信吗从而实现云聊天。 Sqlite数据库
用户在加入聊天室前需要先进行用户登录或注册操作并将注册的用户信息用户ID用户账号用户密码。使用数据库进行统一存储。使用如下结构体类型进行用户信息的注册
typedef struct user{ int id; char account[12]; char password[12];
}usr_t; 客户端功能描述
客户端运行后先出现登陆界面进行云聊天系统的登录或注册操作。登录成功后选择是否与服务端进行连接连接后把账号信息发送给服务端服务端验证后把登录结果通知其他客户端。客户端流程图如图1-1所示
通过云聊天登录后用户可以完成以下操作
进入聊天室与其他成员进行聊天。向服务端上传文件从服务端获取文件查看以往的聊天记录退出聊天系统
客户端流程图 图1-1 服务端功能描述
服务端启动后,等待客户端链接。完成以下操作(服务端流程图如图1-2所示)
接收用户的登陆接收用户需要访问的信息保存用户上传文件将某个用户发送的消息传递给其他用户
客户端与服务器基于 UDP 链接。服务器通过链表记录保存用户信息。
服务端流程图 图1-2 Sock 编程
启动服务端程序监听端口等待客户端连接。完成客户端于服务端简单的 UDP 连接。使用 I/O 复用机制完成客户端与服务端之间的一对多的连接。服务端记录每个客户端的基本信息每个客户端的 IP、端口等基本信息。使用链表记录保存这些信息。 数据包协议
客户端使用 UDP 连接服务端后发送接受数据使用数据封包。封包格式如下协议版本数据包类型数据包的内容。
协议版本发送端填充自己的该数据包的版本信息服务端接受数据包后查看该版本是否是自己能识别的版本。是则进行解析否则作为非法数据包一般丢弃。
数据包类型发送端根据自己发送的数据包里面的数据内容的不同填充不同的类型。如如果数据包的数据信息是登录信息数据类型为整型 1。如果是断开连接的信息则数据类型为整型 2。这样接收端接受到数据之后就可以根据数据类型的值对数据做不同的处理数据包内容要发送的数据。
数据包发送者在发送数据前在数据前增加数据包头。数据包头包含以上的包头信息。
封包可以采用数据结构
typedef struct message{
int type;//数据信息
int id;//用户 ID
char text[128];//消息正文
}msg_t;
数据包接受端接受到数据后分成两次读取一个数据包第一次读取首先读取一个数据包头长度然后根据数据包头中的数据长度读取整个数据包。这样一个一个的数据包就分别被读取出来。
数据包协议总结协议是数据的收发端之间一种约定要好的一种规定。发送者按照该格式发送接受者按照该格式进行解析。 聊天成员数据管理
服务端接收所有客户端的信息将所有加入聊天室的成员使用链表统一管理。用户信息用户ID用户端口号
聊天信息用户名聊天信息
数据包内容要发送的数据。
服务端通过如下结构体类型创建结点对用户信息进行存储。
typedef struct node{ struct sockaddr_in caddr; struct node *next; int id; int len;
}node_t; Makefile多文件编译
通过使用makefile多文件编译简化了编译流程。每次只需要执行make即可完成编译不需要把全部的源文件都重新编译优化了编译流程。
如果源文件发生修改Makefile会检查文件的时间戳如果有文件时间戳更新(该文件就会重新生成)只需要重新编译发生修改的源文件即可节省了编译时间。