int main(int argc,char **argv){ kn_net_open(); kn_proactor_t p = kn_new_proactor(); kn_sockaddr remote; kn_addr_init_un(&remote,argv[1]); int client_count = atoi(argv[2]); int i = 0; send_size = atoi(argv[3]); for(; i < client_count; ++i){ kn_asyn_connect(p,0,SOCK_STREAM,NULL,&remote,on_connect,(void*)p,30000); } while(1){ kn_proactor_run(p,50); } return 0; }
static int lua_getaddr(lua_State *L,int idx,kn_sockaddr *addr){ if(!lua_istable(L,idx)) return -1; lua_rawgeti(L,idx,1); int domain = lua_tointeger(L,-1); if(domain == AF_INET){ lua_rawgeti(L,idx,2); const char *ip = lua_tostring(L,-1); lua_rawgeti(L,idx,3); uint32_t port = lua_tointeger(L,-1); kn_addr_init_in(addr,ip,port); }else if(domain == AF_LOCAL){ lua_rawgeti(L,idx,2); const char *path = lua_tostring(L,-1); kn_addr_init_un(addr,path); }else{ return -1; } return 0; }
int main(int argc,char **argv){ kn_net_open(); kn_proactor_t p = kn_new_proactor(); kn_sockaddr local; unlink(argv[1]); kn_addr_init_un(&local,argv[1]); kn_listen(p,0,SOCK_STREAM,&local,on_accept,(void*)p); uint64_t tick,now; tick = now = kn_systemms64(); while(1){ kn_proactor_run(p,50); now = kn_systemms64(); if(now - tick > 1000) { uint32_t elapse = (uint32_t)(now-tick); totalbytes = (totalbytes/elapse)/1024; printf("client_count:%d,totalbytes:%lldMB/s\n",client_count,totalbytes); tick = now; totalbytes = 0; } } return 0; }