{"id":37300,"date":"2025-05-15T10:51:09","date_gmt":"2025-05-15T02:51:09","guid":{"rendered":"https:\/\/www.wsisp.com\/helps\/37300.html"},"modified":"2025-05-15T10:51:09","modified_gmt":"2025-05-15T02:51:09","slug":"epoll%e6%9c%8d%e5%8a%a1%e5%99%a8%e5%ae%a2%e6%88%b7%e7%ab%af%e9%80%9a%e4%bf%a1","status":"publish","type":"post","link":"https:\/\/www.wsisp.com\/helps\/37300.html","title":{"rendered":"epoll\u670d\u52a1\u5668\u5ba2\u6237\u7aef\u901a\u4fe1"},"content":{"rendered":"<p>\u00a0 1 #include&lt;stdio.h&gt; \u00a0 2 #include&lt;arpa\/inet.h&gt; \u00a0 3 #include&lt;bits\/types.h&gt; \u00a0 4 #include&lt;stdint.h&gt; \u00a0 5 #include&lt;sys\/types.h&gt; \u00a0 6 #include&lt;sys\/socket.h&gt; \u00a0 7 #include&lt;errno.h&gt; \u00a0 8 #include&lt;string.h&gt; \u00a0 9 #include&lt;stdlib.h&gt; \u00a010 #include&lt;unistd.h&gt; \u00a011 #include &lt;fcntl.h&gt; \u00a012 #include &lt;sys\/epoll.h&gt; \u00a013 \/\/\u63a5\u53d7\u4fe1\u606f\u7ed3\u6784\u4f53 \u00a014 struct trr \u00a015 { \u00a016 \u00a0 \u00a0 int used; \u00a017 \u00a0 \u00a0 char data[4096]; \u00a018 }; \u00a019 int main(int argc, const char *argv[]) \u00a020 { \u00a021 \u00a0 \u00a0 char* p&#061;&#034;0.0.0.0&#034;; \u00a022 \u00a0 \u00a0 \/\/\u521b\u5efa\u670d\u52a1\u5668\u7684socket\u5957\u63a5\u5b57\u7b26 \u00a023 \u00a0 \u00a0 int sockfd&#061;socket(AF_INET,SOCK_STREAM,0); \u00a024 \u00a0 \u00a0 if(-1&#061;&#061;sockfd) \u00a025 \u00a0 \u00a0 { \u00a026 \u00a0 \u00a0 \u00a0 \u00a0 perror(&#034;socket&#034;); \u00a027 \u00a0 \u00a0 \u00a0 \u00a0 return -1; \u00a028 \u00a0 \u00a0 } \u00a029\u00a0 \u00a030\u00a0 \u00a031 \u00a0 \u00a0 \/\/\u521d\u59cb\u5316\u4e86\u4e00\u4e2a\u88c5\u6709ip\u548cpot\u7684\u7ed3\u6784\u4f53 \u00a032 \u00a0 \u00a0 struct sockaddr_in add; \u00a033\u00a0 \u00a034\u00a0 \u00a035 \u00a0 \u00a0 \/\/\u8bbe\u5b9a\u4e3aipv4; \u00a036 \u00a0 \u00a0 add.sin_family&#061;AF_INET; \u00a037\u00a0 \u00a038\u00a0 \u00a039 \u00a0 \u00a0 \/\/\u7aef\u53e3\u53f7in_port_t \u00a040 \u00a0 \u00a0 while(argc!&#061;2) \u00a041 \u00a0 \u00a0 { \u00a042 \u00a0 \u00a0 \u00a0 \u00a0 printf(&#034;\u8f93\u5165\u7aef\u53e3\u53f7\\\\n&#034;); \u00a043 \u00a0 \u00a0 \u00a0 \u00a0 close(sockfd); \u00a044 \u00a0 \u00a0 \u00a0 \u00a0 return -1; \u00a045\u00a0 \u00a046 \u00a0 \u00a0 } \u00a047 \u00a0 \u00a0 short \u00a0port&#061; atoi(argv[1]); \u00a048 \u00a0 \u00a0 add.sin_port&#061;htons(port); \u00a049\u00a0 \u00a050\u00a0 \u00a051 \u00a0 \u00a0 \/\/ip \u00a052 \u00a0 \u00a0 if(inet_pton(AF_INET,p,&amp;add.sin_addr)&lt;&#061;0) \u00a053 \u00a0 \u00a0 { \u00a054 \u00a0 \u00a0 \u00a0 \u00a0 perror(&#034;inet_pton&#034;); \u00a055 \u00a0 \u00a0 \u00a0 \u00a0 close(sockfd); \u00a056 \u00a0 \u00a0 \u00a0 \u00a0 return -1; \u00a057 \u00a0 \u00a0 } \u00a058\u00a0 \u00a059\u00a0 \u00a060\u00a0 \u00a061 \u00a0 \u00a0 \/\/\u5c06\u88c5\u6709ip\u548cport\u7684\u7ed3\u6784\u4f53\u5199\u5165\u521b\u5efa\u7684\u5957\u63a5\u5b57\u6587\u4ef6 \u00a062 \u00a0 \u00a0 \/\/\u670d\u52a1\u5668\u7b5b\u9009\u63a5\u53d7\u4fe1\u606f\u7684ip\u548c\u7aef\u53e3\u53f7 \u00a063 \u00a0 \u00a0 if(-1&#061;&#061;bind(sockfd,(struct sockaddr *)&amp;add,sizeof(add))) \u00a064 \u00a0 \u00a0 { \u00a065 \u00a0 \u00a0 \u00a0 \u00a0 perror(&#034;bind&#034;); \u00a066 \u00a0 \u00a0 } \u00a067\u00a0 \u00a068 \u00a0 \u00a0 \/\/ \u00a069 \u00a0 \u00a0 if(-1&#061;&#061;listen(sockfd,10)) \u00a070 \u00a0 \u00a0 { \u00a071 \u00a0 \u00a0 \u00a0 \u00a0 perror(&#034;listen&#034;); \u00a072 \u00a0 \u00a0 \u00a0 \u00a0 close(sockfd); \u00a073 \u00a0 \u00a0 \u00a0 \u00a0 return -1; \u00a074 \u00a0 \u00a0 } \u00a075\u00a0 \u00a076\u00a0 \u00a077\u00a0 \u00a078 \u00a0 \u00a0 printf(&#034;\u670d\u52a1\u5668\u5df2\u7ecf\u542f\u52a8&#xff0c;\u7b49\u5f85\u8fde\u63a5\u300b\u300b\u300b\\\\n&#034;); \u00a079\u00a0 \u00a080 \u00a0 \u00a0 \/\/ \u521b\u5efaepoll\u6587\u4ef6\u5b9e\u4f8b \u00a081 \u00a0 \u00a0 int epfd; \u00a082 \u00a0 \u00a0 epfd &#061; epoll_create1 ( EPOLL_CLOEXEC ); \u00a083 \u00a0 \u00a0 if( epfd &#061;&#061; -1 ) \u00a084 \u00a0 \u00a0 { \u00a085 \u00a0 \u00a0 \u00a0 \u00a0 perror(&#034;epoll_create&#034;); \u00a086 \u00a0 \u00a0 \u00a0 \u00a0 return -1; \u00a087 \u00a0 \u00a0 } \u00a088 \u00a0 \u00a0 \/\/ \u00a089 \u00a0 \u00a0 \/\/\u628a\u670d\u52a1\u5668\u7684sockfd\u6dfb\u52a0\u8fdbepoll\u6587\u4ef6 \u00a090\u00a0 \u00a091 \u00a0 \u00a0 struct epoll_event qwe; \u00a092 \u00a0 \u00a0 memset(&amp;qwe,0,sizeof(qwe)); \u00a093 \u00a0 \u00a0 qwe.events &#061; EPOLLIN; \u00a094 \u00a0 \u00a0 qwe.data.fd&#061;sockfd; \u00a095 \u00a0 \u00a0 if( -1 &#061;&#061; epoll_ctl(epfd,EPOLL_CTL_ADD,sockfd,&amp;qwe)) \u00a096 \u00a0 \u00a0 { \u00a097 \u00a0 \u00a0 \u00a0 \u00a0 perror(&#034;epoll_ctl&#034;); \u00a098 \u00a0 \u00a0 \u00a0 \u00a0 return -1; \u00a099 \u00a0 \u00a0 } 100\u00a0 101 \u00a0 \u00a0 \/\/\u5b9a\u4e49\u4e00\u4e2a\u6fc0\u6d3b\u6570\u7ec4 102 \u00a0 \u00a0 struct epoll_event ev[20]&#061; {0}; 103\u00a0 104\u00a0 105\u00a0 106 \u00a0 \u00a0 \/* 107 \u00a0 \u00a0 \u00a0 \u00a0int flags &#061; fcntl(client,F_GETFL);\u00a0 108 \u00a0 \u00a0 \u00a0 \u00a0flags &#061; flags | O_NONBLOCK; 109 \u00a0 \u00a0 \u00a0 \u00a0fcntl(client,F_SETFL,flags);*\/ 110\u00a0 111 \u00a0 \u00a0 while(1) 112 \u00a0 \u00a0 { 113 \u00a0 \u00a0 \u00a0 \u00a0 memset(ev,0,sizeof(ev)); 114 \u00a0 \u00a0 \u00a0 \u00a0 \/\/\u628a\u6fc0\u6d3b\u7684\u6587\u4ef6\u63cf\u8ff0\u7b26\u7ed3\u6784\u4f53\u53d1\u5728ev\u91cc 115 \u00a0 \u00a0 \u00a0 \u00a0 int len &#061; epoll_wait(epfd,ev,20,-1); 116 \u00a0 \u00a0 \u00a0 \u00a0 if(-1 &#061;&#061; len ) 117 \u00a0 \u00a0 \u00a0 \u00a0 { 118 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 perror(&#034;wpoll_wait&#034;); 119 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 continue; 120 \u00a0 \u00a0 \u00a0 \u00a0 } 121 \u00a0 \u00a0 \u00a0 \u00a0 for(int i &#061; 0; i &lt;&#061; len-1 ; i&#043;&#043; ) 122 \u00a0 \u00a0 \u00a0 \u00a0 { 123 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 int temp &#061; ev[i].data.fd; 124 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if( temp &#061;&#061; sockfd ) 125 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 { 126\u00a0 127 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \/\/client \u63a5\u53d7\u8fde\u63a5\u6210\u529f\u7684\u5ba2\u6237\u7aefip,port 128 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 struct sockaddr_in \u00a0client_addr&#061;{0}; 129 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 int len_client_addr &#061; \u00a0sizeof(client_addr); 130\u00a0 131 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 int client &#061;0; 132 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 client &#061; \u00a0accept ( sockfd , (struct sockaddr *)&amp;client_addr , &amp;len_client_addr ); 133 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if(-1&#061;&#061;client)\u00a0 134 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 { 135 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 perror(&#034;accept&#034;); 136 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 } 137 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 char client_ip [16]&#061;&#034;&#034;; 138 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 inet_ntop(AF_INET,&amp;client_addr.sin_addr,client_ip,16); 139 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 printf(&#034;\u63a5\u6536\u5230\u7684ip &#xff1a;%s\\\\n\u7aef\u53e3\u53f7 : %d\\\\n&#034;,client_ip,ntohs(client_addr.sin_port)); 140\u00a0 141\u00a0 142 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \/\/\u628a\u65b0\u94fe\u63a5\u7684\u5ba2\u6237\u7aef\u5957\u63a5\u5b57\u63cf\u8ff0\u7b26\u6dfb\u52a0\u8fdbepfd 143 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 memset(&amp;qwe,0,sizeof(qwe)); 144 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 qwe.events &#061; EPOLLIN ; 145 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 qwe.data.fd&#061; client; 146 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if( -1 &#061;&#061; epoll_ctl(epfd,EPOLL_CTL_ADD,client,&amp;qwe)) 147 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 { \u00a0\u00a0 148 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 perror(&#034;epoll_ctl111&#034;); \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u00a0 149 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 continue;\u00a0 150 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 } \u00a0\u00a0 151\u00a0 152\u00a0 153 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 } 154 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 else 155 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 { 156\u00a0 157 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 char buf[64]&#061;&#034;&#034;; 158 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ssize_t rcv&#061;read(temp,buf,63); 159 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if(-1&#061;&#061;rcv) 160 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 { 161 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 perror(&#034;read&#034;); 162 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 } 163 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 else if ( 0 &#061;&#061; rcv ) 164 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 { 165 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 printf(&#034;\u5ba2\u6237\u5173\u95ed\u4e86\u94fe\u63a5\\\\n&#034;); 166 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if(-1&#061;&#061; epoll_ctl( epfd , EPOLL_CTL_DEL, temp, NULL)) 167 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 { 168 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 perror(&#034;epoll_ctl_DEL&#034;); 169 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 return -1; 170 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 } 171 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 continue; 172 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 } 173 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 else 174 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 { 175 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if(strcmp(buf,&#034;exit&#034;)&#061;&#061;0) 176 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 { 177 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 printf(&#034;\u5ba2\u6237\u953b\u5173\u95ed\u4e86\u94fe\u63a5\\\\n&#034;); 178 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if(-1&#061;&#061; epoll_ctl( epfd , EPOLL_CTL_DEL, temp, NULL)) 179 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 { 180 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 perror(&#034;epoll_ctl_DEL&#034;); 181 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 return -1; 182 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 } 183 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 continue; 184 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 } 185 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 printf(&#034;\u63a5\u6536\u5230 %ld \u5b57\u8282\\\\n&#034;,strlen(buf)); 186 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 printf(&#034;\u6536\u5230\u7684\u6d88\u606f\u662f \u00a0: %s\\\\n&#034;, buf); 187 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 printf(&#034;\u662f\u5426\u5411\u5ba2\u6237\u7aef\u8fd4\u56de\u6536\u5230\u7684\u6d88\u606f\\\\n&#034;); 188 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 printf(&#034;\u662f&#xff1a;1\/\u5426&#xff1a;2\\\\n&#034;); 189 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 char cmd; 190 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 while(1) 191 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 { 192 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 scanf(&#034;%c&#034;,&amp;cmd); 193 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if(cmd &#061;&#061; &#039;1&#039;) 194 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 { 195 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \/\/\u5411\u5ba2\u6237\u7aef\u8fd4\u56de\u6536\u5230\u7684\u4fe1\u606f 196 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 strcat(buf,&#034;\u2014\u2014&#8230;\u2014\u2014&#034;); 197 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ssize_t snd &#061; send ( temp , buf , strlen(buf) , 0); 198 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if( -1 &#061;&#061; snd ) 199 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 { 200 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 perror(&#034;send&#034;); 201 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 break; 202 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 } 203 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 break; 204 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 } 205 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 else if(cmd &#061;&#061; &#039;2&#039; ) 206 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 {\u00a0 207 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 char fnh&#061;&#039;\\\\0&#039;; 208 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ssize_t snd &#061; send ( temp , &amp;fnh , strlen(buf) , 0); 209 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if( -1 &#061;&#061; snd ) 210 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 { 211 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 perror(&#034;send&#034;); 212 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 break; 213 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 } 214 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 break; 215\u00a0 216 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 } 217 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 else 218 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 { 219 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 continue; 220 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 } 221 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 } 222 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 memset(buf,0,64); 223 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 } 224\u00a0 225 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 } 226 \u00a0 \u00a0 \u00a0 \u00a0 } 227\u00a0 228\u00a0 229 \u00a0 \u00a0 } 230 \u00a0 \u00a0 close(sockfd); 231\u00a0 232 \u00a0 \u00a0 return 0; 233 } \u00a0<\/p>\n<\/p>\n<p>\u00a0 1 #include&lt;stdio.h&gt; \u00a0 2 #include&lt;arpa\/inet.h&gt; \u00a0 3 #include&lt;bits\/types.h&gt; \u00a0 4 #include&lt;stdint.h&gt; \u00a0 5 #include&lt;sys\/types.h&gt; \u00a0 6 #include&lt;sys\/socket.h&gt; \u00a0 7 #include&lt;errno.h&gt; \u00a0 8 #include&lt;string.h&gt; \u00a0 9 #include&lt;stdlib.h&gt; \u00a010 #include&lt;unistd.h&gt; \u00a011 #include &lt;sys\/epoll.h&gt; \u00a012 \/\/\u4f20\u8f93\u7684\u4fe1\u606f\u7ed3\u6784\u4f53 \u00a013 struct trr \u00a014 { \u00a015 \u00a0 \u00a0 int used; \u00a016 \u00a0 \u00a0 char data[4096]; \u00a017 }; \u00a018 int main(int argc, const char *argv[]) \u00a019 { \u00a020 \u00a0 \u00a0 \/\/\u5199\u5165\u76ee\u6807\u670d\u52a1\u5668\u7684ip \u00a021 \u00a0 \u00a0 char* p&#061;&#034;192.168.186.130&#034;; \u00a022\u00a0 \u00a023\u00a0 \u00a024\u00a0 \u00a025 \u00a0 \u00a0 \/\/\u521b\u5efa\u5ba2\u6237\u7aef\u7684socket\u5957\u63a5\u5b57\u7b26 \u00a026 \u00a0 \u00a0 int client &#061;socket(AF_INET,SOCK_STREAM,0); \u00a027 \u00a0 \u00a0 if(client&#061;&#061;-1) \u00a028 \u00a0 \u00a0 { \u00a029 \u00a0 \u00a0 \u00a0 \u00a0 perror(&#034;socket&#034;); \u00a030 \u00a0 \u00a0 \u00a0 \u00a0 return -1; \u00a031 \u00a0 \u00a0 } \u00a032\u00a0 \u00a033\u00a0 \u00a034\u00a0 \u00a035 \u00a0 \u00a0 \/\/\u5b9a\u4e49\u4e86\u4e00\u4e2a\u88c5\u6709ip\u548cpot\u7684\u7ed3\u6784\u4f53 \u00a036 \u00a0 \u00a0 struct sockaddr_in add; \u00a037\u00a0 \u00a038 \u00a0 \u00a0 \/\/\u8bbe\u5b9a\u4e3aipv4; \u00a039 \u00a0 \u00a0 add.sin_family&#061;AF_INET; \u00a040 \u00a0 \u00a0 \/\/\u7aef\u53e3\u53f7in_port_t \u00a041 \u00a0 \u00a0 while(argc!&#061;2){printf(&#034;\u8f93\u5165\u7aef\u53e3\u53f7\\\\n&#034;);close(client);return -1;} \u00a042 \u00a0 \u00a0 short \u00a0port&#061; atoi(argv[1]); \u00a043 \u00a0 \u00a0 add.sin_port&#061;htons(port); \u00a044\u00a0 \u00a045\u00a0 \u00a046\u00a0 \u00a047 \u00a0 \u00a0 \/\/ip \u00a048 \u00a0 \u00a0 if(0&gt;inet_pton(AF_INET,p,&amp;add.sin_addr)) \u00a049 \u00a0 \u00a0 { \u00a050 \u00a0 \u00a0 \u00a0 \u00a0 perror(&#034;inet_pton&#034;); \u00a051 \u00a0 \u00a0 \u00a0 \u00a0 close(client); \u00a052 \u00a0 \u00a0 \u00a0 \u00a0 return -1; \u00a053 \u00a0 \u00a0 } \u00a054\u00a0 \u00a055 \u00a0 \u00a0 \/\/\u5c06\u672c\u5ba2\u6237\u7aef\u548c\u670d\u52a1\u5668\u94fe\u63a5 \u00a056 \u00a0 \u00a0 if(-1&#061;&#061;connect(client,(struct sockaddr*)&amp;add,sizeof(add))) \u00a057 \u00a0 \u00a0 { \u00a058 \u00a0 \u00a0 \u00a0 \u00a0 perror(&#034;connect&#034;); \u00a059 \u00a0 \u00a0 \u00a0 \u00a0 return -1; \u00a060 \u00a0 \u00a0 } \u00a061 \u00a0 \u00a0 \/\/\u521b\u5efaepoll\u6587\u4ef6\u5b9e\u4f8b \u00a062 \u00a0 \u00a0 int epfd; \u00a063 \u00a0 \u00a0 epfd &#061; epoll_create1 ( EPOLL_CLOEXEC ); \u00a064 \u00a0 \u00a0 if( epfd &#061;&#061; -1 ) \u00a065 \u00a0 \u00a0 { \u00a066 \u00a0 \u00a0 \u00a0 \u00a0 perror(&#034;epoll_create1&#034;); \u00a067 \u00a0 \u00a0 \u00a0 \u00a0 return -1; \u00a068 \u00a0 \u00a0 } \u00a069 \u00a0 \u00a0 \/\/\u628a\u672c\u5ba2\u6237\u7aef\u7684sockfd(client)\u548c\u8f93\u5165\u884c\u7f13\u51b2\u533astdin\u52a0\u5165epoll\u5b9e\u4f8b \u00a070 \u00a0 \u00a0 struct epoll_event epoll_str; \u00a071 \u00a0 \u00a0 memset(&amp;epoll_str,0,sizeof(epoll_str)); \u00a072 \u00a0 \u00a0 epoll_str.events &#061; EPOLLIN; \u00a073 \u00a0 \u00a0 epoll_str.data.fd &#061; client; \u00a074 \u00a0 \u00a0 if ( -1 &#061;&#061; epoll_ctl(epfd,EPOLL_CTL_ADD,client,&amp;epoll_str)) \u00a075 \u00a0 \u00a0 { \u00a076 \u00a0 \u00a0 \u00a0 \u00a0 perror(&#034;epoll_ctl-add&#034;); \u00a077 \u00a0 \u00a0 \u00a0 \u00a0 return -1; \u00a078 \u00a0 \u00a0 } \u00a079 \u00a0 \u00a0 struct epoll_event epoll_stdin; \u00a080 \u00a0 \u00a0 memset(&amp;epoll_stdin,0,sizeof(epoll_stdin)); \u00a081 \u00a0 \u00a0 epoll_str.events &#061; EPOLLIN; \u00a082 \u00a0 \u00a0 epoll_str.data.fd &#061; 0; \u00a083 \u00a0 \u00a0 if ( -1 &#061;&#061; epoll_ctl(epfd,EPOLL_CTL_ADD,0,&amp;epoll_stdin)) \u00a084 \u00a0 \u00a0 { \u00a085 \u00a0 \u00a0 \u00a0 \u00a0 perror(&#034;epoll_ctl-add&#034;); \u00a086 \u00a0 \u00a0 \u00a0 \u00a0 return -1; \u00a087 \u00a0 \u00a0 } \u00a088 \u00a0 \u00a0 \/\/\u5b9a\u4e49\u4e00\u4e2a\u6fc0\u6d3b\u6570\u7ec4 \u00a089 \u00a0 \u00a0 struct epoll_event ev[2]; \u00a090\u00a0 \u00a091 \u00a0 \u00a0 while(1) \u00a092 \u00a0 \u00a0 { \u00a093 \u00a0 \u00a0 \u00a0 \u00a0 printf(&#034;\u8f93\u5165\u4f20\u7ed9\u670d\u52a1\u5668\u7684\u4fe1\u606f\\\\n&#034;); \u00a094 \u00a0 \u00a0 \u00a0 \u00a0 char buf[64]&#061;&#034;&#034;; \u00a095 \u00a0 \u00a0 \u00a0 \u00a0 scanf(&#034;%s&#034;,buf); \u00a096\u00a0 \u00a097 \u00a0 \u00a0 \u00a0 \u00a0 ssize_t aaa &#061; send(client,buf,strlen(buf),0); \u00a098 \u00a0 \u00a0 \u00a0 \u00a0 if(-1&#061;&#061;aaa) \u00a099 \u00a0 \u00a0 \u00a0 \u00a0 { 100 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 perror(&#034;read&#034;); 101 \u00a0 \u00a0 \u00a0 \u00a0 } 102 \u00a0 \u00a0 \u00a0 \u00a0 else if ( 0 &#061;&#061; aaa ) 103 \u00a0 \u00a0 \u00a0 \u00a0 { 104 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 printf(&#034;\u5ba2\u6237\u5173\u95ed\u4e86\u94fe\u63a5\\\\n&#034;); 105 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 break; 106 \u00a0 \u00a0 \u00a0 \u00a0 } 107 \u00a0 \u00a0 \u00a0 \u00a0 else 108 \u00a0 \u00a0 \u00a0 \u00a0 { 109 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if(strcmp(buf,&#034;exit&#034;)&#061;&#061;0) 110 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 { 111 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 printf(&#034;\u5173\u95ed\u5ba2\u6237\u7aef\\\\n&#034;); 112 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 break; 113 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 } 114 \u00a0 \u00a0 \u00a0 \u00a0 } 115\u00a0 116\u00a0 117\u00a0 118 \u00a0 \u00a0 \u00a0 \u00a0 memset(ev,0,sizeof(ev)); 119 \u00a0 \u00a0 \u00a0 \u00a0 int len &#061; epoll_wait(epfd, ev, 2, -1); 120 \u00a0 \u00a0 \u00a0 \u00a0 if(-1 &#061;&#061; len ) 121 \u00a0 \u00a0 \u00a0 \u00a0 { 122 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 perror(&#034;epoll_wait&#034;); 123 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 continue; 124 \u00a0 \u00a0 \u00a0 \u00a0 } 125 \u00a0 \u00a0 \u00a0 \u00a0 for(int i &#061; 0; i&lt;len ;i&#043;&#043;) 126 \u00a0 \u00a0 \u00a0 \u00a0 { \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 127\u00a0 128 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 struct epoll_event temp &#061; ev[i]; 129 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if (temp.data.fd &#061;&#061; client) 130\u00a0 131 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 { 132 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 memset(buf , 0 ,64); 133 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ssize_t rcv &#061; recv( client , buf ,63 ,0); 134 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if(rcv &#061;&#061;-1) 135 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 { 136 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 perror(&#034;recv&#034;); 137 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 continue; 138 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 } 139 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if(strlen(buf)&#061;&#061;0) 140 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 { 141 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 printf(&#034;\u670d\u52a1\u5668\u672a\u8fd4\u56de\u4fe1\u606f\\\\n&#034;); 142 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 break; 143 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 } 144 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 printf(&#034;\u6536\u5230\u670d\u52a1\u5668\u8fd4\u56de\u7684\u4fe1\u606f\\\\n&#034;); 145 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 printf(&#034;%s\\\\n&#034;, buf ); 146 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 } 147 \u00a0 \u00a0 \u00a0 \u00a0 } 148 \u00a0 \u00a0 } 149 \u00a0 \u00a0 return 0; 150 } \u00a0<\/p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u6587\u7ae0\u6d4f\u89c8\u9605\u8bfb852\u6b21\uff0c\u70b9\u8d5e16\u6b21\uff0c\u6536\u85cf13\u6b21\u3002139                 printf(&quot;\u63a5\u6536\u5230\u7684ip \uff1a%s\\\\n\u7aef\u53e3\u53f7 : %d\\\\n&quot;,client_ip,ntohs(client_addr.sin_port));185                     printf(&quot;\u63a5\u6536\u5230 %ld \u5b57\u8282\\\\n&quot;,strlen(buf));186                     printf(&quot;\u6536\u5230\u7684\u6d88\u606f\u662f  : %s\\\\n&quot;, buf);187                     printf(&quot;\u662f\u5426\u5411\u5ba2\u6237\u7aef\u8fd4\u56de\u6536\u5230\u7684\u6d88\u606f\\\\n&quot;);<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[43,427,44],"topic":[],"class_list":["post-37300","post","type-post","status-publish","format-standard","hentry","category-server","tag-43","tag-427","tag-44"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>epoll\u670d\u52a1\u5668\u5ba2\u6237\u7aef\u901a\u4fe1 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.wsisp.com\/helps\/37300.html\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"epoll\u670d\u52a1\u5668\u5ba2\u6237\u7aef\u901a\u4fe1 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"og:description\" content=\"\u6587\u7ae0\u6d4f\u89c8\u9605\u8bfb852\u6b21\uff0c\u70b9\u8d5e16\u6b21\uff0c\u6536\u85cf13\u6b21\u3002139         printf(&quot;\u63a5\u6536\u5230\u7684ip \uff1a%s\\n\u7aef\u53e3\u53f7 : %d\\n&quot;,client_ip,ntohs(client_addr.sin_port));185           printf(&quot;\u63a5\u6536\u5230 %ld \u5b57\u8282\\n&quot;,strlen(buf));186           printf(&quot;\u6536\u5230\u7684\u6d88\u606f\u662f : %s\\n&quot;, buf);187           printf(&quot;\u662f\u5426\u5411\u5ba2\u6237\u7aef\u8fd4\u56de\u6536\u5230\u7684\u6d88\u606f\\n&quot;);\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.wsisp.com\/helps\/37300.html\" \/>\n<meta property=\"og:site_name\" content=\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"article:published_time\" content=\"2025-05-15T02:51:09+00:00\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/37300.html\",\"url\":\"https:\/\/www.wsisp.com\/helps\/37300.html\",\"name\":\"epoll\u670d\u52a1\u5668\u5ba2\u6237\u7aef\u901a\u4fe1 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"isPartOf\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\"},\"datePublished\":\"2025-05-15T02:51:09+00:00\",\"dateModified\":\"2025-05-15T02:51:09+00:00\",\"author\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/37300.html#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.wsisp.com\/helps\/37300.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/37300.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.wsisp.com\/helps\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"epoll\u670d\u52a1\u5668\u5ba2\u6237\u7aef\u901a\u4fe1\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\",\"url\":\"https:\/\/www.wsisp.com\/helps\/\",\"name\":\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"description\":\"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"contentUrl\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"caption\":\"admin\"},\"sameAs\":[\"http:\/\/wp.wsisp.com\"],\"url\":\"https:\/\/www.wsisp.com\/helps\/author\/admin\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"epoll\u670d\u52a1\u5668\u5ba2\u6237\u7aef\u901a\u4fe1 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.wsisp.com\/helps\/37300.html","og_locale":"zh_CN","og_type":"article","og_title":"epoll\u670d\u52a1\u5668\u5ba2\u6237\u7aef\u901a\u4fe1 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","og_description":"\u6587\u7ae0\u6d4f\u89c8\u9605\u8bfb852\u6b21\uff0c\u70b9\u8d5e16\u6b21\uff0c\u6536\u85cf13\u6b21\u3002139         printf(&quot;\u63a5\u6536\u5230\u7684ip \uff1a%s\\n\u7aef\u53e3\u53f7 : %d\\n&quot;,client_ip,ntohs(client_addr.sin_port));185           printf(&quot;\u63a5\u6536\u5230 %ld \u5b57\u8282\\n&quot;,strlen(buf));186           printf(&quot;\u6536\u5230\u7684\u6d88\u606f\u662f : %s\\n&quot;, buf);187           printf(&quot;\u662f\u5426\u5411\u5ba2\u6237\u7aef\u8fd4\u56de\u6536\u5230\u7684\u6d88\u606f\\n&quot;);","og_url":"https:\/\/www.wsisp.com\/helps\/37300.html","og_site_name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","article_published_time":"2025-05-15T02:51:09+00:00","author":"admin","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"admin","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"4 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.wsisp.com\/helps\/37300.html","url":"https:\/\/www.wsisp.com\/helps\/37300.html","name":"epoll\u670d\u52a1\u5668\u5ba2\u6237\u7aef\u901a\u4fe1 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","isPartOf":{"@id":"https:\/\/www.wsisp.com\/helps\/#website"},"datePublished":"2025-05-15T02:51:09+00:00","dateModified":"2025-05-15T02:51:09+00:00","author":{"@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41"},"breadcrumb":{"@id":"https:\/\/www.wsisp.com\/helps\/37300.html#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.wsisp.com\/helps\/37300.html"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.wsisp.com\/helps\/37300.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.wsisp.com\/helps"},{"@type":"ListItem","position":2,"name":"epoll\u670d\u52a1\u5668\u5ba2\u6237\u7aef\u901a\u4fe1"}]},{"@type":"WebSite","@id":"https:\/\/www.wsisp.com\/helps\/#website","url":"https:\/\/www.wsisp.com\/helps\/","name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","description":"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41","name":"admin","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/","url":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","contentUrl":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","caption":"admin"},"sameAs":["http:\/\/wp.wsisp.com"],"url":"https:\/\/www.wsisp.com\/helps\/author\/admin"}]}},"_links":{"self":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/37300","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/comments?post=37300"}],"version-history":[{"count":0,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/37300\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media?parent=37300"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/categories?post=37300"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/tags?post=37300"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/topic?post=37300"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}