一直以来以为accept阻塞的时候,若另有线程关闭相应的监听套接字,accept会立即返回。

今天先是在NDK上试,没反应。又在ARCHLINUX试了下,还是没反应。难道是我一直记的都是错的!!!!!!!!!!!!!!!!写下来,以做备忘,同时写一份非阻塞的ACCEPT

 int tcp_accept_timed( int fd, int msecs )
{
int rc, connfd;
struct timeval tv;
fd_set rset;
struct sockaddr_in sin;
socklen_t len; do
{
tv.tv_sec = msecs / ;
tv.tv_usec = ( msecs % ) * ; FD_ZERO( &rset );
FD_SET( fd, &rset );
}
while ( ( rc = select( fd + , &rset, NULL, NULL, &tv ) ) == - && errno == EINTR );
if ( rc < )
{
if ( rc == - )
{
perror( "select" );
}
return -;
} len = sizeof( struct sockaddr_in );
memset( &sin, , len );
connfd = accept( fd, ( struct sockaddr* )&sin, &len );
if ( connfd == - )
{
perror( "accept" );
}
else
{
fprintf( stdout, "peer address ------ [%s:%d]\n", inet_ntoa( sin.sin_addr ), ntohs( sin.sin_port ) );
} return connfd;
}

accept阻塞的更多相关文章

  1. GJM : 中断被Socket.Accept阻塞的线程

    原帖地址:http://blog.csdn.net/kingfox/article/details/7233350 原文作者:狐帝 刚刚学习C#,在编写一个网络通讯的程序的时候,遇到了点麻烦.监听代码 ...

  2. accept 和 connect API深入 重点accept阻塞和非阻塞问题学习

    https://www.cnblogs.com/zhangkele/p/10284234.html

  3. accept()

    在一个套接口接受一个连接.accept()是c语言中网络编程的重要的函数,windows系统在#include<winsock.h> ,而linux系统在#include <sys/ ...

  4. c++之socket,阻塞模式

    这里描述下socket的阻塞模式: 首先,socket有几个函数 socket() 创建socket bind() 绑定socket到一个地址 listen() 开启soket监听 accept()  ...

  5. python_非阻塞套接字及I/O流

    http://www.cnblogs.com/lixy-88428977/p/9638949.html 首先,我们要明确2个问题: 普通套接字实现的服务端有什么缺陷吗? 有,一次只能服务一个客户端! ...

  6. Python网络编程-IO阻塞与非阻塞及多路复用

    前言 问题:普通套接字实现的服务端的缺陷 一次只能服务一个客户端!                         accept阻塞! 在没有新的套接字来之前,不能处理已经建立连接的套接字的请求 re ...

  7. Socket-IO 系列(三)基于 NIO 的同步非阻塞式编程

    Socket-IO 系列(三)基于 NIO 的同步非阻塞式编程 缓冲区(Buffer) 用于存储数据 通道(Channel) 用于传输数据 多路复用器(Selector) 用于轮询 Channel 状 ...

  8. socket编程 —— 非阻塞socket (转)---例子已上传至文件中

    在上一篇文章 <socket编程——一个简单的例子> http://blog.csdn.net/wind19/archive/2011/01/21/6156339.aspx 中写了一个简单 ...

  9. 非阻塞套接字与IO多路复用

    我们了解了socket之后已经知道,普通套接字实现的服务端的缺陷:一次只能服务一个客户端! 并且,为了使一个客户端能够不断收发消息,我们还要使用while循环来轮询,这极大地降低了我们的效率 acce ...

随机推荐

  1. python cmd 启动python项目报错:no module named “xxx”

    场景:使用pycharm编辑器启动pyhon项目时可以启动,但使用cmd启动时,会报:no module named “xxx”的错误,此时,有两种情况: 1.no module named “xxx ...

  2. CMake使用总结

    总结CMake的常用命令,并介绍有用的CMake资源. CMake意为cross-platform make,可用于管理c/c++工程.CMake解析配置文件CMakeLists.txt生成Makef ...

  3. Jquery ajax json 值回传不了

    今天调试系统的时候,MVC 框架下调用ajax 值,回传的json值获取不到,后来发现竟然是服务没开,郁闷不已,留个截图,做个纪念.

  4. 频繁项集------->产生强关联规则的过程

    频繁项集------->产生强关联规则的过程 1.由Apriori算法(当然别的也可以)产生频繁项集 2.根据选定的频繁项集,找到它所有的非空子集 3.强关联规则需要满足最小支持度和最小置性度  ...

  5. Linux下 FACL详解

    1. 什么是ACL ACL即Access Control List 主要的目的是提供传统的owner,group,others的read,write,execute权限之外的具体权限设置 ACL可以针 ...

  6. css为tbody或者li奇数偶数行样式

    <style> table tbody tr:nth-child(odd){ background:#fff; } table tbody tr:nth-child(even){ back ...

  7. [转]mysql的查询、子查询及连接查询

    转自:http://www.cnblogs.com/rollenholt/archive/2012/05/15/2502551.html 一.mysql查询的五种子句         where(条件 ...

  8. [书目20140824]触动人心:设计优秀的iPhone应用

    关于作者致谢译者序入门设计令人欣喜且易用的应用等下……先吸口气阅读本书不需要专业知识忠言一切从点击开始       我们是如何使用iPhone应用的行走中:一只手,一只眼睛,一直在抖动尽快搞定满满一箱 ...

  9. SQL 几个查看性能的语句

    1.查找目前SQL Server所执行的SQL语法,并展示资源情况: SELECT s2.dbid , DB_NAME(s2.dbid) AS [数据库名] , --s1.sql_handle , ( ...

  10. mysql的简单优化【简单易学】

    1.选取最适用的字段属性: 表字段尽量设小,不要给数据库增加没必要的空间:如:值为'01'.'02',给char(2)即可: 2.使用连接(JOIN)来代替子查询(Sub-Queries): 使用jo ...