handle_t kn_new_sock(int domain,int type,int protocal){ int fd = socket(domain,type|SOCK_CLOEXEC,protocal); if(fd < 0) return NULL; handle_t h = NULL; if(type == SOCK_STREAM) h = new_stream_socket(fd,domain); else if(type == SOCK_DGRAM){ h = new_datagram_socket(fd,domain); } if(!h) close(fd); return h; }
int main(int argc,char **argv){ signal(SIGPIPE,SIG_IGN); engine *e = engine_new(); 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_DGRAM,IPPROTO_UDP); easy_addr_reuse(fd,1); if(0 == easy_bind(fd,&server)){ dgram_socket_ *udpserver = new_datagram_socket(fd); engine_associate(e,udpserver,datagram_callback); datagram_socket_recv(udpserver,(iorequest*)new_request(),IO_POST,NULL); engine_regtimer(e,1000,timer_callback,NULL); engine_run(e); } return 0; }