while(1) { //每次循环,读写集初始化 rset = allset; wset = allset; //设置非阻塞I/O io_block_var = fcntl(tcp_fd, F_GETFL, 0); fcntl(tcp_fd, F_SETFL, io_block_var|O_NONBLOCK); nready = select(maxfd + 1, &rset, NULL, NULL, NULL); //检查读集合,如果对应的TCP socket有新连接,则处理 if (FD_ISSET(tcp_fd, &rset)) { sin_size = sizeof(struct sockaddr_in); //接收新连接 ...
by meijianchi - 程序开发 - 2006-07-25 21:20:00 阅读(3185) 回复(12)
在调用socket的accept成功之后,再调用SSL_accept,这个地方应当是协商过程,不知道SSL_accept会不会阻塞,如果阻塞,那么如何再次调用SSL_accept了?如果使用epoll,连接请求是触发accept,不知道accept之后,SSL_accept阻塞后会再发什么事件。
这是根据自己的笔记整理的,如有错误,欢迎指出来. tcp协议本身是可靠的,并不等于应用程序用tcp发送数据就一定是可靠的.不管是否阻塞,send发送的大小,并不代表对端recv到多少的数据. 在阻塞模式下,send函数的过程是将应用程序请求发送的数据拷贝到发送缓存中发送并得到确认后再返回.但由于发送缓存的存在,表现为:如果发送缓存大小比请求发送的大小要大,那么send函数立即返回,同时向网络中发送数据;否则,send向网络发送缓存中不能容...
引用链接:http://xufish.blogbus.com/logs/40537344.html tcp协议本身是可靠的,并不等于应用程序用tcp发送数据就一定是可靠的.不管是否阻塞,send发送的大小,并不代表对端recv到多少的数据.在阻塞模式下, send函数的过程是将应用程序请求发送的数据拷贝到发送缓存中发送并得到确认后再返回.但由于发送缓存的存在,表现为:如果发送缓存大小比请求发送的大小要大,那么send函数立即返回,同时向网络中发送数据;否则,send向网络发送缓存...
各位前辈: 小弟刚刚接触linux不久,在工作中需要设计串口的非阻塞通信,以实现串行通信服务的等待超时操作。 我的设计中使用NONBLOCK打开设备文件/dev/ttyS0,采用循环读取的方式等待串口数据的到来。但在实际测试中总有数据丢失或出错,如果采用阻塞方式读取就不会有这种情况,不知哪位前辈能给提供一些linux下非阻塞串行通信的范例,给小弟一些指点,先行谢过了!!
如题,谢谢! [ 本帖最后由 yjh777 于 2006-10-26 15:40 编辑 ]
下面的代码实现了以下特性:
1. getchar获得输入字符不需要按回车
2. 非阻塞得检测键盘输入
3. 输入的字符不回显
[code]
#include