int main(int argc,char **argv){ signal(SIGPIPE,SIG_IGN); engine_t p = kn_new_engine(); kn_sockaddr local; kn_addr_init_in(&local,argv[1],atoi(argv[2])); handle_t l = kn_new_sock(AF_INET,SOCK_STREAM,IPPROTO_TCP); kn_sock_listen(p,l,&local,on_accept,p); kn_reg_timer(p,1000,timer_callback,NULL); kn_engine_run(p); return 0; }
static int luasocket_listen(lua_State *L){ luasocket_t luasock = lua_touserdata(L,1); if(luasock->type == _SOCKET){ if(!luaL_checkstring(L,2)){ lua_pushstring(L,"invalid ip"); return 1; } if(!luaL_checkinteger(L,3)){ lua_pushstring(L,"invalid port"); return 1; } const char *ip = lua_tostring(L,2); int port = lua_tointeger(L,3); kn_sockaddr local; kn_addr_init_in(&local,ip,port); int ret = listener_listen(luasock,&local); if(0 != ret){ lua_pushstring(L,"listen error"); }else{ luasock->listening = 1; lua_pushnil(L); } }else if(luasock->type == _DATAGRAM){ if(!luaL_checkstring(L,2)){ lua_pushstring(L,"invalid ip"); return 1; } if(!luaL_checkinteger(L,3)){ lua_pushstring(L,"invalid port"); return 1; } const char *ip = lua_tostring(L,2); int port = lua_tointeger(L,3); kn_sockaddr local; kn_addr_init_in(&local,ip,port); if(0 == kn_sock_listen(datagram_gethandle(luasock->datagram),&local)){ lua_pushnil(L); }else{ lua_pushstring(L,"listen error"); } } return 1; }
int main(int argc,char **argv){ signal(SIGPIPE,SIG_IGN); //create ioworker and logicprocessor logicprocessor_t logic = create_logic(on_new_connection,on_packet,on_disconnected); _worker = ioworker_new(logic); //run net worker thread ioworker_startrun(_worker); //run logic process thread logic_startrun(logic); //start listen engine_t p = kn_new_engine(); kn_sockaddr local; kn_addr_init_in(&local,argv[1],atoi(argv[2])); handle_t l = kn_new_sock(AF_INET,SOCK_STREAM,IPPROTO_TCP); if(0 == kn_sock_listen(l,&local)){ kn_engine_associate(p,l,on_accept); kn_engine_run(p); } return 0; }