void main(int argc, char **argv) { FILE *uheader, *server, *user; FILE *iheader, *sheader; set_program_name("mig"); parseArgs(argc, argv); init_global(); init_type(); LookNormal(); (void) yyparse(); if (errors > 0) exit(1); more_global(); uheader = myfopen(UserHeaderFileName, "w"); if (!UserFilePrefix) user = myfopen(UserFileName, "w"); server = myfopen(ServerFileName, "w"); if (ServerHeaderFileName) sheader = myfopen(ServerHeaderFileName, "w"); if (IsKernelServer) { iheader = myfopen(InternalHeaderFileName, "w"); } if (BeVerbose) { printf("Writing %s ... ", UserHeaderFileName); fflush(stdout); } WriteUserHeader(uheader, StatementList); fclose(uheader); if (ServerHeaderFileName) { if (BeVerbose) { printf ("done.\nWriting %s ...", ServerHeaderFileName); fflush (stdout); } WriteServerHeader(sheader, StatementList); fclose(sheader); } if (IsKernelServer) { if (BeVerbose) { printf("done.\nWriting %s ... ", InternalHeaderFileName); fflush(stdout); } WriteInternalHeader(iheader, StatementList); fclose(iheader); } if (UserFilePrefix) { if (BeVerbose) { printf("done.\nWriting individual user files ... "); fflush(stdout); } WriteUserIndividual(StatementList); } else { if (BeVerbose) { printf("done.\nWriting %s ... ", UserFileName); fflush(stdout); } WriteUser(user, StatementList); fclose(user); } if (BeVerbose) { printf("done.\nWriting %s ... ", ServerFileName); fflush(stdout); } WriteServer(server, StatementList); fclose(server); if (BeVerbose) printf("done.\n"); exit(0); }
void udp_recv_process(int udpsock) { char ubuf[2500], *pn = ubuf; char sbuf[2500]; struct sockaddr_in clnt_addr; UINT clilen = sizeof(clnt_addr); int rlen = recvfrom(udpsock,(void *)ubuf,2048,0,(struct sockaddr *)&clnt_addr, &clilen); if(rlen <= 0) return; ubuf[rlen] = 0; _LOGFILE("\n <++++++%s: udp_recv_process(%dbyte): \"%s\"\n",strHHMMSS(g_Now), rlen, ubuf); string srcId = GetToken(pn,SEPARATOR,pn); string dstId = GetToken(pn,SEPARATOR,pn); strcpy(sbuf,pn); // 보내기위해 저장.. string command = GetToken(pn,SEPARATOR,pn); string key = GetToken(pn,SEPARATOR,pn); string data = GetToken(pn,SEPARATOR,pn); _LOGFILE_NONUM("고객수: %d\t====> %s\n",g_PosMap.size(),ubuf); Z_POS *pPos, *pDstPos; if((pPos=GetMember(g_PosMap,srcId)) == NULL) { pPos = new Z_POS; pPos->udpsock = udpsock; char peer_ip[20]; inet_ntop(AF_INET,&clnt_addr.sin_addr,peer_ip,sizeof(peer_ip)); pPos->peer_ip = peer_ip; pPos->peerport = ntohs(clnt_addr.sin_port); memcpy((char*)&pPos->clnt_addr,(char*)&clnt_addr, clilen); pPos->user_id = srcId; } g_PosMap[pPos->user_id] = pPos; WriteUser(pPos->user_id, pPos->clnt_addr); _LOGFILE("\n srcId='%s'\n",srcId.c_str()); _LOGFILE("\n dstId='%s'\n",dstId.c_str()); _LOGFILE("\n command='%s'\n",command.c_str()); if(dstId.length() == 0 || dstId == "0") { udp_send_process(pPos, sbuf); sleep(1); udp_send_process(pPos, sbuf); return; } if((pDstPos=GetMember(g_PosMap,dstId)) == NULL) { pDstPos = new Z_POS; } // dbSelect_Position(pPos); // dbSelect_Position(pDstPos); pDstPos = GetMember(g_PosMap,dstId); // pPos->LOGGING(); if(command == "ROOM") { } if(command == "READY") { } if(command == "GAME") { } udp_send_process(pDstPos, sbuf); }