예제 #1
0
int main(int argc,char **argv)
{
    mutil_thread = 0;
    setup_signal_handler();
    init_clients();
    InitNetSystem();
    ENGINE engine = CreateEngine();
    int csize = atoi(argv[3]);
    int i = 0;
    for(; i < csize; ++i)
        EConnect(engine,argv[1],atoi(argv[2]),(void*)engine,on_connect,1000);
    uint32_t tick,now;
    tick = now = GetSystemMs();
    while(!stop) {
        EngineRun(engine,50);
        sendpacket();
        now = GetSystemMs();
        if(now - tick > 1000)
        {
            printf("ava_interval:%d\n",ava_interval);
            tick = now;
        }
    }
    CleanNetSystem();
    return 0;
}
예제 #2
0
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;
}
예제 #3
0
int main(int argc,char **argv)
{
	setup_signal_handler();
    InitNetSystem();
    struct netservice *tcpclient = new_service();
    tcpclient->connect(tcpclient,"127.0.0.1",8010,(void*)tcpclient,on_connect,10000);
	while(!stop){
        tcpclient->loop(tcpclient,50);
	}
	destroy_service(&tcpclient);
    CleanNetSystem();
    return 0;
}
예제 #4
0
int main(int argc,char **argv)
{

	ENGINE engine;
	uint32_t n;
	ip = argv[1];
	port = atoi(argv[2]);
	if(InitNetSystem() != 0)
	{
		printf("Init error\n");
		return 0;
	}
	wpacket_allocator = (allocator_t)create_block_obj_allocator(SINGLE_THREAD,sizeof(struct wpacket));
	uint32_t i = 0;
	init_clients();
	engine = CreateEngine();
	thread_run(_Listen,&engine);
	tick = GetSystemMs();
	while(1)
	{
		EngineRun(engine,50);
		now = GetSystemMs();
		if(now - tick > 1000)
		{
			printf("recv:%u,send:%u,s_req:%u,total_recv:%u\n",packet_recv,packet_send,send_request,total_bytes_recv/1024/1024);
			tick = now;
			packet_recv = 0;
			packet_send = 0;
			send_request = 0;
			iocp_count = 0;
			total_bytes_recv = 0;
			//printf("w:%d,r:%d,b:%d\n",wpacket_count,rpacket_count,buf_count);
		}
		/*
		if(now - last_send_tick > 10)
		{
			last_send_tick = now;
			for(i=0; i < MAX_CLIENT; ++i)
			{
				if(clients[i])
				{
					connection_send(clients[i],NULL,NULL);
				}
			}
		}*/

	}
	CleanNetSystem();
	return 0;
}
예제 #5
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;
}
예제 #6
0
int main(int argc,char **argv)
{
    mutil_thread = 0;
	setup_signal_handler();
	init_clients();
    InitNetSystem();
    struct netservice *tcpserver = new_service();
	tcpserver->listen(tcpserver,argv[1],atoi(argv[2]),(void*)tcpserver,accept_client);
	uint32_t tick,now;
    tick = now = GetSystemMs();
	while(!stop){
		tcpserver->loop(tcpserver,50);
        now = GetSystemMs();
		if(now - tick > 1000)
		{
			printf("client_count:%d,send_count:%d\n",client_count,(packet_send_count*1000)/(now-tick));
			tick = now;
			packet_send_count = 0;
		}
	}
	destroy_service(&tcpserver);
    CleanNetSystem();
    return 0;
}