`
muscle-liu
  • 浏览: 227351 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Unix socket I/O 操作实现 timeout

阅读更多
前段时间写的程序跑了一段时间,发现当 socket send/receive data 一直在阻塞时并没有处理 timeout。

在 Unix 上边实现 socket timeout, 可以有三种方法:

1. 如果 socket 实现功能简单, 可以用Alarm signal 来处理 timeout

2. 用 Select()方法设置。此方法可以监听 socket 的状态,同时可以设置 Timeout 。

3. 用 setsockopt() 方法设置。此方法可以设置某一 socket 的属性,如每次接的数据大小,等等。它就含有 SO_RCVTIMEO 和 SO_SNDTIMEO 两种属性来设置接收/发送的 Timeout 。但是此方法只有部分系统支持, 其中 Solaris 就不支持。

我的程序就是跑在Solaris上, 最后用第二种方法实现了。
0
0
分享到:
评论

相关推荐

    UNIX环境高级编程英文第三版+源码

    5.7 Line-at-a-Time I/O 152 5.8 Standard I/O Efficiency 153 5.9 Binary I/O 156 5.10 Positioning a Stream 157 5.11 For matted I/O 159 5.12 Implementation Details 164 5.13 Temporar y Files 167 5.14 ...

    UNIX环境高级编程(第二版,英文版)

    Line-at-a-Time I/O Section 5.8. Standard I/O Efficiency Section 5.9. Binary I/O Section 5.10. Positioning a Stream Section 5.11. Formatted I/O Section 5.12. Implementation ...

    linux网络编程

    15socket编程(十) 用select改进第八章点对点聊天程序 16socket编程(十一) 套接字I/O超时设置方法 用select实现超时 read_timeout函数封装 write_timeout函数封装 accept_timeout函数封装 connect_timeout函数...

    UNIX Network Programming Volume 1, Third Edition (Unix网络编程卷1第3版英文版)

    Unix网络编程卷1,第三版,英文版。大名顶顶的Richard Stevens所写 目录: Copyright Addison-Wesley Professional Computing Series Foreword Preface Introduction Changes from the Second Edition ...

    C++教程网《Linux网络编程》视频百度云地址

    connect_timeout函数封装 17socket编程(十二) select限制 poll 18socket编程(十三) epoll使用 epoll与select、poll区别 epoll LT/ET模式 19socket编程(十四) UDP特点 UDP客户/服务基本模型 UDP回射...

    2018年C++教程网的linux网络编程视频共41集百度云下载链接.rar

    connect_timeout函数封装 17socket编程(十二) select限制 poll 18socket编程(十三) epoll使用 epoll与select、poll区别 epoll LT/ET模式 19socket编程(十四) UDP特点 UDP客户/服务基本模型 UDP回射客户/服务器...

    Linux网络编程 视频 教程

    connect_timeout函数封装 17socket编程(十二) select限制 poll 18socket编程(十三) epoll使用 epoll与select、poll区别 epoll LT/ET模式 19socket编程(十四) UDP特点 UDP客户/服务基本模型 UDP回射...

    C++教程网视频:linux网络编程

    connect_timeout函数封装 17socket编程(十二) select限制 poll 18socket编程(十三) epoll使用 epoll与select、poll区别 epoll LT/ET模式 19socket编程(十四) UDP特点 UDP客户/服务基本模型 UDP回射...

    c++教程网的linux网络编程视频下载

    connect_timeout函数封装 17socket编程(十二) select限制 poll 18socket编程(十三) epoll使用 epoll与select、poll区别 epoll LT/ET模式 19socket编程(十四) UDP特点 UDP客户/服务基本模型 UDP回射...

    [免费]2018年C++教程网的linux网络编程视频百度云下载链接.rar

    accept_timeout函数封装 connect_timeout函数封装 17socket编程(十二) select限制 poll 18socket编程(十三) epoll使用 epoll与select、poll区别 epoll LT/ET模式 19socket编程(十四) UDP特点 UDP...

    linux 下socket通信中select的用法实例

    第三,timeout的值大于0,这就是等待的超时时间,即select在timeout时间内阻塞,超时时间之内有事件到来就返回了,否则在超时后不管怎样一定返回,返回值同上述。 返回值: 负值:select错误 正值:某些文件可...

    softap_ap6212a0_tinav2.1_验证通过_旧版本的系统_20170915_1223没有外层目录.7z

    <M> Connection tracking timeout tuning via Netlink <*> Netfilter Xtables support (required for ip_tables) *** Xtables combined modules *** (有很多项,在下面!) <*> "conntrack" connection ...

    php.ini-development

    max_input_time ; Default Value: -1 (Unlimited) ; Development Value: 60 (60 seconds) ; Production Value: 60 (60 seconds) ; output_buffering ; Default Value: Off ; Development Value: 4096 ; Production...

    windows版curl

    --abstract-unix-socket <path> Connect via abstract Unix domain socket --anyauth Pick any authentication method -a, --append Append to target file when uploading --basic Use ...

    一个进程池的服务器程序

    #include <time.h> #include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.h> #include #include #include #include #include <sys/stat.h> #include #include <sys/wait.h> #include #include...

    Lua的IO框架LuajitIO.zip

    -- red:set_timeout(1000) -- 1 sec -- or connect to a unix domain socket file listened -- by a redis server: -- local ok, err = red:connect("unix:/path/to/redis.sock") ...

    PHP使用Redis长连接的方法详解

    分享给大家供大家参考,具体如下: ...pconnect函数声明 其中time_out表示客户端闲置多少秒后,就断开连接。函数连接成功返回true,失败返回false: ... can be a host, or the path to a unix domain socket

    分布式文件系统fastdfs架构剖析及配置优化

    纯C实现,支持Linux、FreeBSD等UNIX系统 类google FS,不是通用的文件系统,只能通过专有API访问,目前提供了C、Java和PHP API 为互联网应用量身定做,解决大容量文件存储问题,追求高性能和高扩展性 FastDFS可以...

Global site tag (gtag.js) - Google Analytics