ChinaUnix.net
相关文章推荐:

Linux 串口 select函数

#include #include #include using namespace std; int main() { struct timeval tv; tv.tv_sec = 0; <=== s tv.tv_usec = 500000; <=== us for (int i = 0; i < 10; i++) { //Sleep(tv.tv_usec / 1000); printf("%dn", select(0, NULL, NULL, NULL, &tv)); printf("errno:%dn", errno); //sleep(1); cout<<123<

by s5un - C/C++ - 2005-11-18 15:58:52 阅读(1741) 回复(2)

相关讨论

void* CMySocket::PeekMessage(void* lpParameter) { CMySocket* pSocket = (CMySocket* )lpParameter; int usersock_fd = pSocket->GetSocketfd(); struct timeval tv; // tv.tv_sec = 0; // tv.tv_usec = 5000; fd_set rdfdset, exfdset; while(1) { FD_ZERO(&rdfdset); FD_ZERO(&exfdset); FD_SET(usersock_fd, &rdfdset); FD_SET(usersock_fd, &exfdset); if(select(usersock_fd+1, &rdfdset, NULL, &exf...

by zhangguojun4571 - C/C++ - 2005-12-20 16:27:18 阅读(1601) 回复(2)

看 使用 select 设计超时 connect 函数的问题(linux 上连接 127.0.0.1 任何端口总是成功 http://community.csdn.net/Expert/topic/5617/5617988.xml?temp=.6573145

by hzhxxx - C/C++ - 2007-07-02 09:00:34 阅读(3084) 回复(3)

我们用的开发平台是基于linux 2.4 内核代码上的,上层的应用程序都是通过socket进行通信的(包括进程间通信和网络通信),socket都设置位nonblock,但是最近经过测试发现有两种情况下socket的系统调用会一直阻塞不能返回: 1,select的调用,这种情况下的socket是作为服务端,且已经建立了连接,我们对select设置了超时时间,但有时候可能是由于调用select太频繁(服务端向客户端发送大数据,服务端把大数据分片发送,select就是等...

by wwzg99 - 内核/嵌入技术 - 2006-09-20 17:16:32 阅读(1300) 回复(0)

关于select函数的用法不是很清楚,尤其是什么时候套接口可读?可写? 以下是一段服务器代码,想要通过客户端的connect使得sockfd可读,但是没有成功:) 那位高手帮忙解决一下:) server 端: #include #include #include #include #include #include #include #define PORT 3241 #define LOG 10 #define MAXLEN 100 main(int argc,char **argv...

by everpom - 程序开发 - 2006-10-09 10:45:43 阅读(2134) 回复(6)

我想实现非阻塞Socket通信,但是select却总返回0,不知道到底是哪个环节写错了,请高手指教 下面是部分代码,前面已经实现了socket、bind和listen: TOut.tv_sec = 2; TOut.tv_usec = 2; //设置监听端口 FD_ZERO(&ReadFds); FD_ZERO(&ErrFds); FD_SET(g_iSockfd, &ReadFds); iReturn = select(g_iSockfd + 1, &ReadFds, NULL, NULL, &TOut); if (iReturn <= 0) { writelogf(gManageLogFile, 1, "se...

by xyf1949 - C/C++ - 2006-06-20 18:00:09 阅读(1163) 回复(3)

在socket通信中,server端使用了select函数来判断哪个客户端已经准备好了。 select(FD_SETSIZE,&readfd_set,NULL,NULL,NULL); 可是在客户端往socket中写入数据后,服务端没有反应。 请问到底在什么状况下,select才认为fd set中的描述符已做好准备了? 谢谢

by taureanyang - C/C++ - 2005-06-30 09:13:14 阅读(2631) 回复(17)

#undef max #define max(x,y) ((x) >; (y) ? (x) : (y)) ...... int fd1 = 4, fd2 =5;(假设) FD_SET (fd1, &rd); FD_SET (fd2, &rd); int n=max(fd1,fd2) ; select(n+1,&rd,NULL,NULL,NULL); 下面两个哪个为真,还是都为真,为什么? FD_ISSET(fd1,&rd); FD_ISSET(fd2,&rd);

by zhouyifeng - C/C++ - 2003-09-28 14:58:06 阅读(1143) 回复(4)

想问问这两个线程里同时 select 同一个fd,会不会有冲突问题,或在select 后的send/recv中会不会有冲突 void thread1() { ....... ::select(fd+1, &rset, NULL, &eset, &timeout); ....... ::recv(fd,buf, MAX_PACKET_SIZE, 0); } void thread2() { ....... ::select(fd + 1, NULL, &wset, &eset, &timeout); ....... ::send(fd, buffer, length , 0); }

by qinyd - C/C++ - 2007-07-04 15:36:20 阅读(1548) 回复(1)

以下是unix网络编程上figure6.22的代码,我没有明白为什么要将rset = allset; 而在select里又用rset ,我觉的应该在将select函数的第2,3,4个参数全部设置。 25 for ( ; ; ) { 26 rset = allset; /* structure assignment */ 27 nready = select(maxfd + 1, &rset, NULL, NULL, NULL); 28 if (FD_ISSET(listenfd, &rset)) { /* new client connection */ 29 ...

by aobai - C/C++ - 2007-06-21 22:27:18 阅读(1172) 回复(0)

写了个ping ,基本功能实现了,想在超时那用select,可是运行时发现ping一个局域网未使用的ip时候第一次读时select返回是0,以后再读返回全是1,意味着有一个socket可读,应该一直返回0,没有数据可读才对阿,实在搞不懂,请各位高手帮忙看一下。下面是缩减的代码部分 # define READ 1 # define WRITE 0 int main(int argc,char**argv ) { int ret,nsend=1; wile(nsend<10) { . . ret=sock_select(sockfd,READ...

by canmo0522 - C/C++ - 2007-01-25 18:33:56 阅读(4405) 回复(26)