1.使用poll实现服务器端,监控创建的socket # -*- coding: cp936 -*- """ 非阻塞socket的使用(此程序在ubuntu linux上测试,Windows没有select.poll) 监控socket的三个状态:IN/ERR/HUP 程序以5000ms的时间长度为间隔,如果有客户端的请求,接收连接并进行显示;如果没有的话, 每隔5000ms显示一次"no data coming" """ import socket,select host = "" port = 50000 s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.bin...
by jcodeer - Python文档中心 - 2007-10-30 22:47:31 阅读(1445) 回复(0)
看书有写到: fds[0].events=pollIN; fds[1].events=pollIN; 这句: while(fds[0].events || fds[0].events) 这句有何意义呢? 都是返回1的吗? 还有一句: if(fds.revents) {} 这句又有何意义呢? 是返回一个如:例pollIN,它代表一个整数? 看了书没搞懂.非常感谢回答.
最近碰到一个奇怪的问题。 我们的应用程序在一个经过openSSL的端口上监听,然后和client端进行交互。 当连接建立完以后,我们的程序是通过poll来判断该连接上是否有数据可读的。 现在的问题是: 有时候能看到数据进来(通过Wireshar看到的),但我们程序的poll结果却一直说revents为0。 不知道这种情况是怎么引起的。 请指教,谢谢。
在linux下select函数的最大可管理的socket连接数是FD_SETSIZE=1024,在网上看见说使用poll的话可以突破1024的限制,但是我在把程序由select改为poll以后连接数到了1024以后,仍然不能建立连接,还是有1024这个限制,不知道poll是不是还是跟select一样,受到linux内核的限制?
Select系统调用用于多路监控,当没有一个文件满足要求时,select
本帖最后由 langwan1314 于 2010-07-06 22:13 编辑 poll()函数:这个函数是某些Unix系统提供的用于执行与select()函数同等功能的函数,下面是这个函数的声明: #include <poll.h> int poll(struct pollfd fds[], nfds_t nfds, int timeout); 参数说明: fds:是一个struct pollfd结构类型的数组,用于存放需要检测其状态的Socket描述符;每当调用这个函数之后,系统不会清空这个数组,操作起来比较方便;特别是对于socket连...