📄 coms.h
字号:
/********************************************************** *Filename: coms.h *Author: 蔡业桂 *Date: 2009-5-21 * *主要的数据结构、全局变量和包的解析与生成 *********************************************************/#ifndef COMMAND_H#define COMMAND_H#include <unistd.h>#include <netinet/in.h>#include <stdlib.h>#include <stdio.h>#include <string.h>#include <strings.h>#include <semaphore.h>#define NAMELEN 50#define MSGLEN 1000#define COMLEN 1500#define RECFRG 1448#define HSIZE 10#define FILENAME 128#define MSGLIMIT 100#define HL_HEADERSIZE 4#define HL_FILESIZE 9#define HL_FILETYPE 1#define HL_1416 11#define CAPACITY 50#define IMHELP \ "******Commands: help(h) list(ls) talk(tk) sendfile(sf)******\n"\ "******Commands: getfile(gf) refresh(rf) ceaseSend(cs) quit(q)******\n"typedef int (*Mysnd)(int, const char*, int, int);typedef struct filenode filenode;typedef struct command{ unsigned int version; unsigned int packetNo; char senderName[NAMELEN]; char senderHost[NAMELEN]; unsigned int commandNo; char additional[MSGLEN]; struct sockaddr_in peer; filenode * fileList; struct command *next;}command;struct filenode //文件序号:文件名:大小(单位:字节):最后修改时间:文件属性 [: 附加属性=val1[,val2…][:附加信息=…]]:\a文件序号…{ int tcpSock; unsigned int fileNo; char fileName[FILENAME]; char fileSize[NAMELEN]; char mtime[NAMELEN]; int fileType; char otherAttrs[2*NAMELEN]; struct filenode* next;};typedef struct gsNode{ int tcpSock; struct sockaddr_in peer; unsigned int packetNo; int transferring; int cancelled; char *targetDir; filenode fileList; struct gsNode *next;} gsNode;typedef struct msgList{ command comHead; command *comTail;} msgList;extern const char allHosts[]; //广播用地址extern int msgSock; //消息extern int tcpSock; //文件extern struct passwd* pwd; extern struct utsname sysName;extern char workDir[FILENAME];extern int utf8; //系统的LC_CTYPEextern gsNode sendFHead, getFHead; //发送和接收文件列表extern msgList mList; //接受到的消息列表extern pthread_mutex_t sendFMutex; //发送文件extern pthread_mutex_t getFMutex; //接收文件extern pthread_mutex_t msgMutex; //消息队列extern pthread_mutex_t usrMutex; //消息队列extern sem_t waitNonEmpty, waitNonFull; //消息列表信号量extern int msgParser(char *msg, int size, command* com);extern int msgCreater(char* msg, command* com, size_t msgLen);extern filenode* getFilelist(const char* comFiles);extern void initCommand(command *com, unsigned int flag);extern void deCommand(command *com);extern void initGsNode(gsNode *gs);extern void deGsNode(gsNode *gs);#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -