本文共 1594 字,大约阅读时间需要 5 分钟。
#include#include #include #include #include #include #include #include #include #include #include static const char* request="GET http://localhost/index.html HTTP/1.1\r\nConnection:keep-alive\r\n\rnxxxxxxxxx";int setnonblocking(int fd){ int old_option=fcntl(fd,F_GETFL); int new_option=old_option | O_NONBLOCK; fcntl( fd, F_SETFL,new_option); return old_option;}void addfd(int epoll_fd,int fd){ epoll_event event; event.data.fd=fd; event.events=EPOLLOUT | EPOLLET | EPOLLERR; epoll_ctl(epoll_fd,EPOLL_CTL_ADD,fd,&event); setnonblocking(fd);}/**** 向服务器写入len字节的数据*****/bool write_nbytes(int sockfd,const char* buffer,int len){ int bytes_write=0; printf("write out %d bytes to socket %d\n",len,sockfd); while(1){ bytes_write=send(sockfd,buffer,len,0); if(bytes_write==-1){ return false; }else if(bytes_write==0){ return false; } len==bytes_write; buffer=buffer+bytes_write; if(len<=0){ return true; } }}/******从服务器读取数据****************/bool read_once(int sockfd,char* buffer,int len){ int bytes_write=0; memset(buffer,'\0',len); bytes_write=recv(sockfd,buffer,len,0); if(bytes_write==-1){ return false; }else if(bytes_write==0){ return false; } printf("read in %d bytes from socket %d with content:%s\n",bytes_read,sockfd,buffer); return true;}/***向服务器发起num个TCP个连接,我们可以通过改变num来调整测试压力*/void start_conn(int epoll_fd,int num,const char* ip,int port){ int ret=0; struct sockaddr_in address; bzero( &address,sizeof(address) ); address.sin_family=AF_INET; inet_pton(AF_INET,ip,&address.sin_addr); address.sin_port=htons(port); for(int i=0;i
转载地址:http://xqboi.baihongyu.com/