Beispiel #1
0
int main(int argc,char **argv){
	kn_net_open();	
	kn_proactor_t p = kn_new_proactor();
	kn_sockaddr local;
	kn_fd_t l;
	kn_addr_init_in(&local,argv[1],atoi(argv[2]));
	l = kn_dgram_listen(p,SOCK_DGRAM,&local,transfer_finish);	
 	struct dgram_session *session = calloc(1,sizeof(*session));
	session->s = l;  
 	kn_fd_setud(l,session);
 	dgram_session_recv(session);    		
 	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("totalbytes:%lldMB/s\n",totalbytes);
			tick = now;
			totalbytes = 0;
		}		
	}
	return 0;
}
void on_accept(kn_fd_t s,void *ud){
	printf("on_accept\n");
	kn_proactor_t p = (kn_proactor_t)ud;
	struct session *session = calloc(1,sizeof(*session));
	session->s = s;
	kn_fd_setud(s,session);    	
	kn_proactor_bind(p,s,transfer_finish);
	session_recv(session);
	++client_count;
}
void on_connect(kn_fd_t s,struct kn_sockaddr *remote,void *ud,int err)
{
	kn_proactor_t p = (kn_proactor_t)ud;
	if(s){
		printf("connect ok\n");
		struct session *session = calloc(1,sizeof(*session));
		session->s = s;
		kn_fd_setud(s,session);    	
		kn_proactor_bind(p,s,transfer_finish);
		session_send(session,send_size);
	}else{
		printf("connect failed\n");
	}	
}