Ejemplo n.º 1
0
chk_acceptor *chk_listen_tcp_ip4(chk_event_loop *loop,const char *ip,int16_t port,chk_acceptor_cb cb,void *ud) {
	chk_sockaddr  server;
	int32_t       fd,ret;
	chk_acceptor *a = NULL;
	do {
		if(chk_error_ok != easy_sockaddr_ip4(&server,ip,port)) 
			break;
		if(0 > (fd = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP))){
		    CHK_SYSLOG(LOG_ERROR,"socket() failed errno:%d",errno); 			
			break;
		}
		easy_addr_reuse(fd,1);
		if(chk_error_ok == (ret = easy_listen(fd,&server))){
			a = chk_acceptor_new(fd,ud);
			chk_loop_add_handle(loop,(chk_handle*)a,cb);
		}else close(fd);
	}while(0);	
	return a;
}
Ejemplo n.º 2
0
int main(int argc,char **argv) {
	signal(SIGPIPE,SIG_IGN);
	loop = chk_loop_new();
	chk_sockaddr server;
	if(0 != easy_sockaddr_ip4(&server,argv[1],atoi(argv[2]))) {
		printf("invaild address:%s\n",argv[1]);
	}
	int32_t fd = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
	easy_addr_reuse(fd,1);
	if(0 == easy_listen(fd,&server)){
		chk_acceptor *a = chk_acceptor_new(fd,NULL);
		assert(0 == chk_loop_add_handle(loop,(chk_handle*)a,(chk_event_callback)accept_cb));
		chk_loop_addtimer(loop,1000,on_timeout_cb,NULL);
		chk_loop_run(loop);
	}else{
		close(fd);
		printf("server start error\n");
	}	
	return 0;
}