1.bool update(int _fd, int _timeout, char *buffer){
2.
3. //cout << "update +++++++" << endl;
4. fd_set fdClient;
5.
6. FD_ZERO( &fdClient );
7. FD_SET( _fd, &fdClient );
8.
9. struct timeval tv;
10.
11. tv.tv_sec = _timeout;
12. tv.tv_usec = 0;
13.
14.
15. if( select( _fd + 1, &fdClient, NULL, NULL, &tv ) == -1 ) {
16. return true;
17. }
18.
19. if( FD_ISSET( _fd, &fdClient ) ) {
20. memset( buffer, 0, sizeof( char ) * GPBUF_SIZE );
21.
22. int c = recv( _fd, buffer, GPBUF_SIZE, 0 );
23.
24. if( c == -1 && errno != EWOULDBLOCK ) {
25. if( errno != ECONNRESET )
26. //cout << "peer reset the connection" << endl;
27. return true;
28. }
29. if( c == 0 )
30. return true;
31.
32. }
33. return false;
34.}
2.
3. //cout << "update +++++++" << endl;
4. fd_set fdClient;
5.
6. FD_ZERO( &fdClient );
7. FD_SET( _fd, &fdClient );
8.
9. struct timeval tv;
10.
11. tv.tv_sec = _timeout;
12. tv.tv_usec = 0;
13.
14.
15. if( select( _fd + 1, &fdClient, NULL, NULL, &tv ) == -1 ) {
16. return true;
17. }
18.
19. if( FD_ISSET( _fd, &fdClient ) ) {
20. memset( buffer, 0, sizeof( char ) * GPBUF_SIZE );
21.
22. int c = recv( _fd, buffer, GPBUF_SIZE, 0 );
23.
24. if( c == -1 && errno != EWOULDBLOCK ) {
25. if( errno != ECONNRESET )
26. //cout << "peer reset the connection" << endl;
27. return true;
28. }
29. if( c == 0 )
30. return true;
31.
32. }
33. return false;
34.}
作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://jackxiang.com/post/2100/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
评论列表