#ifndef _MYCHAT_H #define _MYCHAT_H #include "debug.h" #include "dlist.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #define BLACKLOG 5 #define UDP_MAXSIZE 512 #define TCP_MAXSIZE 5*1024 /*UDP收到客户端的消息*/ struct msg_udp { int type_udp; //类型 char self_name[20]; //自己的名字 char aim_name[20]; //目标名字 unsigned int data_size; //数据大小0 ~ 65535 char data[UDP_MAXSIZE+1]; //数据 struct sockaddr_in self_addr_udp; //自己udp地址 struct sockaddr_in self_addr_tcp; //自己tcp地址 struct sockaddr_in aim_addr_udp; //目标地址 }; /*添加尾部的结构体*/ struct servmsg_udp { struct msg_udp recvmsg; //UDP信息 struct list_head servmsg_udp_list; }; /*UDP消息类型*/ enum msg_udp_type { LOG_IN = 1, //登录 --1 REFRESH, //要求刷新用户在线用户(重新打印在线用户) --2 CHAT_ONE, //私聊消息 --3 CHAT_ALL, //群聊消息 --4 DOWNLOAD, //从服务器下载文件(下载之前先打印文件列表) --5 UPLOAD, //上传文件到服务器 --6 OFFLINE, //下线通知 --7 OVER, //服务器发送本次消息结束 --8 ERROR, //重复登录 --9 FILE_NAME, //发送文件列表 --10 FILE_ERROR, //选择文件名失败 --11 NO_HANDLE //不做处理 --12 }; /*服务器接收消息后,创建的在线用户列表*/ struct user_info { char user_name[20]; //用户名字 int id; //id //是否在线 struct sockaddr_in cli_addr_udp; //客户端udp地址 struct sockaddr_in cli_addr_tcp; //客户端tcp地址 struct list_head user_info_list; }; /*********************TCP结构体******************************/ /*TCP收到客户端的消息*/ struct msg_tcp { int type_tcp; //类型 char self_name[20]; //自己的名字 char aim_name[20]; //目标名字 unsigned int data_size; //数据大小0 ~ 65535 unsigned int alto_size; //总大小0 ~ 65535 unsigned int data_sequence; //数据顺序 char data[TCP_MAXSIZE+1]; //数据 struct sockaddr_in self_addr_tcp; //自己tcp地址 struct sockaddr_in aim_addr_tcp; //目标地址 }; /*添加尾部的结构体*/ struct servmsg_tcp { struct msg_tcp recvmsg; //TCP信息 struct list_head servmsg_tcp_list; }; /*TCP消息类型*/ enum msg_tcp_type { DOWN_IF = 20, //下载询问 DOWN_YES, //允许下载 DOWN_NO, //拒绝下载 DOWN_START, //开始下载 DOWN_READY, //开始下载 DOWN_LOADING, //正在下载 DOWN_END, //下载结束 UP_YES, //允许上传 UP_NO //拒绝上传 }; struct down_info { char user_name[20]; //用户名字 int file_wrfd; //文件fd struct sockaddr_in cli_addr_tcp; //客户端tcp地址 struct list_head down_info_list; }; #endif