?? coms.h
字號:
/********************************************************** *Filename: coms.h *Author: 星云鵬 *Date: 2008-05-15 * *主要的數據結構、全局變量和包的解析與生成 *********************************************************/#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 + -