int main(int argc,char **argv) { //msgque_flush_time = 5; setup_signal_handler(); InitNetSystem(); //共用网络层,两个线程各运行一个echo服务 wpacket_allocator = new_obj_allocator(sizeof(struct wpacket),8192); rpacket_allocator = new_obj_allocator(sizeof(struct rpacket),8192); asynnet_t asynet = asynnet_new(2); msgdisp_t disp1 = new_msgdisp(asynet,5, CB_CONNECT(asynconnect), CB_CONNECTED(asynconnected), CB_DISCNT(asyndisconnected), CB_PROCESSPACKET(asynprocesspacket), CB_CONNECTFAILED(asynconnectfailed)); /*msgdisp_t disp2 = new_msgdisp(asynet, asynconnect, asynconnected, asyndisconnected, asynprocesspacket, asynconnectfailed); */ thread_t service1 = create_thread(THREAD_JOINABLE); //thread_t service2 = create_thread(THREAD_JOINABLE); ip = argv[1]; port = atoi(argv[2]); thread_start_run(service1,service_main,(void*)disp1); //sleepms(1000); //thread_start_run(service2,service_main,(void*)disp2); uint32_t tick,now; tick = now = GetSystemMs(); while(!stop){ sleepms(1000); now = GetSystemMs(); //if(now - tick > 1000) { uint32_t elapse = now-tick; recvsize = (recvsize/elapse)/1000; printf("client_count:%d,recvsize:%d,recvcount:%d\n",client_count,recvsize,recvcount); tick = now; packet_send_count = 0; recvcount = 0; recvsize = 0; } } thread_join(service1); //thread_join(service2); CleanNetSystem(); return 0; }
int main(int argc,char **argv) { setup_signal_handler(); InitNetSystem(); asynnet_t asynet = asynnet_new(3);//3个poller,1个用于监听,1个用于处理客户端连接,1个用于处理服务器连接 msgdisp_t disp_to_server = new_msgdisp(asynet,3, CB_CONNECT(to_server_connect), CB_CONNECTED(to_server_connected), CB_PROCESSPACKET(to_server_process)); msgdisp_t disp_to_client = new_msgdisp(asynet,2, CB_CONNECT(to_client_connect), CB_ASYNPROCESSPACKET(to_client_process)); thread_t service1 = create_thread(THREAD_JOINABLE); thread_t service2 = create_thread(THREAD_JOINABLE); to_client_ip = argv[1]; to_client_port = atoi(argv[2]); to_server_ip = argv[3]; to_server_port = atoi(argv[4]); thread_start_run(service1,service_toserver,(void*)disp_to_server); sleepms(1000); thread_start_run(service2,service_toclient,(void*)disp_to_client); while(!stop){ sleepms(100); } thread_join(service1); thread_join(service2); CleanNetSystem(); return 0; }
int main(){ lua_State *L = luaL_newstate(); luaL_openlibs(L); if (luaL_dofile(L,"gateconfig.lua")) { const char * error = lua_tostring(L, -1); lua_pop(L,1); printf("%s\n",error); return 0; } luaObject_t gatecfg = GETGLOBAL_OBJECT(L,"gateserver"); agentcount = GET_OBJ_FIELD(gatecfg,"agentservice_count",int,lua_tonumber); release_luaObj(gatecfg); luaObject_t toclicfg = GETGLOBAL_OBJECT(L,"toclient"); string_t cliip = new_string(GET_OBJ_FIELD(toclicfg,"ip",const char *,lua_tostring)); int cliport = GET_OBJ_FIELD(toclicfg,"port",int,lua_tonumber); release_luaObj(toclicfg); luaObject_t togamecfg = GETGLOBAL_OBJECT(L,"togame"); g_gameip = new_string(GET_OBJ_FIELD(togamecfg,"ip",const char *,lua_tostring)); g_gameport = GET_OBJ_FIELD(togamecfg,"port",int,lua_tonumber); release_luaObj(togamecfg); luaObject_t torediscfg = GETGLOBAL_OBJECT(L,"toredis"); g_redisip = new_string(GET_OBJ_FIELD(torediscfg,"ip",const char *,lua_tostring)); g_redisport = GET_OBJ_FIELD(torediscfg,"port",int,lua_tonumber); release_luaObj(torediscfg); lua_close(L); InitNetSystem(); //两个poller,一个用于accept,一个用于数据传输 asynnet_t asynet = asynnet_new(1); if(start_verifyservice() != 0){ SYS_LOG(LOG_ERROR,"start verifyservice failed\n"); return 0; } /*if(start_togame_service(asynet) != 0){ SYS_LOG(LOG_ERROR,"start togame service failed\n"); return 0; }*/ uint8_t i; for(i = 0; i < agentcount; ++i){ g_agents[i] = new_agentservice(i,asynet); } msgdisp_t listener = new_msgdisp(asynet,1,CB_CONNECT(agent_connect)); //开启对客户端的监听 int32_t err = 0; listener->listen(listener,0,to_cstr(cliip),cliport,&err); if(err != 0) { SYS_LOG(LOG_ERROR,"start listen failed:%d\n",err); return 0; } setup_signal_handler(); while(!stop){ msg_loop(listener,500); } //stop_togame_service(); stop_verifyservice(); for(i = 0; i < agentcount; ++i){ stop_agentservice(g_agents[i]); } return 0; }