int main(int argc,char **argv){ signal(SIGPIPE,SIG_IGN); e = engine_new(); sockaddr_ server; easy_sockaddr_ip4(&server,argv[1],atoi(argv[2])); uint32_t size = atoi(argv[3]); uint32_t i = 0; for( ; i < size; ++i){ int32_t fd = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); easy_noblock(fd,1); int32_t ret; if(0 == (ret = easy_connect(fd,&server,NULL))) on_connected(fd,0,e); else if(ret == -EINPROGRESS){ connector *c = connector_new(fd,e,2000); engine_associate(e,c,on_connected); }else{ close(fd); printf("connect to %s %d error\n",argv[1],atoi(argv[2])); } } //engine_regtimer(e,1000,timer_callback,NULL); engine_run(e); return 0; }
static void on_connected(int32_t fd,int32_t err,void *ud) { if(fd >= 0 && err == 0) { engine *e = (engine*)ud; stream_socket_ *h = new_stream_socket(fd); engine_associate(e,h,transfer_finish); struct session *s = session_new(h); session_send(s,65535); } else if(err == ETIMEDOUT) { printf("connect timeout\n"); } }
static void on_connected(int32_t fd,int32_t err,void *ud){ if(fd >= 0 && err == 0){ engine *e = (engine*)ud; connection *c = connection_new(fd,65535,rpacket_decoder_new(1024)); engine_associate(e,(handle*)c,on_packet); timer *t = engine_regtimer(e,20,timer_callback,c); c->ud_ptr = t; //packet *p = (packet*)wpacket_new(64); //wpacket_write_uint64((wpacket*)p,(uint64_t)c); //wpacket_write_string((wpacket*)p,"hello world\n"); //connection_send(c,p,NULL); }else{ printf("connect error\n"); } }
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; }