当前位置: 技术问答>linux和unix
unix socket问题
来源: 互联网 发布时间:2015-02-18
本文导语: 用select监听套接字,为何无法从socket读取数据,代码大致如下: select(fd+1, &readfds, &writefds, &exceptfds, 0); FD_ISSET(fd, &readfds)总是返回0; 可是直接调用recv()却可以。 | ... FD_ZERO(&rset); ...
用select监听套接字,为何无法从socket读取数据,代码大致如下:
select(fd+1, &readfds, &writefds, &exceptfds, 0);
FD_ISSET(fd, &readfds)总是返回0; 可是直接调用recv()却可以。
select(fd+1, &readfds, &writefds, &exceptfds, 0);
FD_ISSET(fd, &readfds)总是返回0; 可是直接调用recv()却可以。
|
...
FD_ZERO(&rset);
FD_ZERO(&wset);
FD_SET(fd, &rset);
FD_SET(fd, &wset);
tv.tv_sec = sec;
tv.tv_usec = 0;
n = select(fd + 1, &rset, &wset, NULL, &tv);
..........
FD_ZERO(&rset);
FD_ZERO(&wset);
FD_SET(fd, &rset);
FD_SET(fd, &wset);
tv.tv_sec = sec;
tv.tv_usec = 0;
n = select(fd + 1, &rset, &wset, NULL, &tv);
..........
|
先要给readfds, &writefds, &exceptfds赋值吧
|
你多贴点代码,这两行肯定没错,呵呵
|
在select之前,加上FD_SET(fd,&readfds);