`
muscle-liu
  • 浏览: 230016 次
  • 性别: 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
分享到:
评论

相关推荐

    I/O多路转接之select

    在IT行业中,I/O多路转接是一种处理多个并发I/O事件的技术,它允许程序同时监控多个文件描述符,等待它们准备就绪时进行相应的读写操作。在本例中,我们将聚焦于"I/O多路转接之select",这是一种在Unix-like系统中...

    java基于UNIX域套接字(unix domain socket)连接redis

    timeout: 3000 password: your-password ``` 最后,需要注意的是,使用UNIX域套接字的安全性和权限问题。由于`.sock`文件是文件系统中的实体,因此需要确保只有授权的进程才能访问。通常,Redis服务器会以特定...

    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 ...

    select函数来实现多路复用输入/输出模型

    在IT领域,多路复用输入/输出模型(Multiplexing Input/Output Model)是一种用于高效管理多个并发I/O操作的技术。在这个模型中,程序可以同时监控多个文件描述符(file descriptors),等待它们中的任意一个准备...

    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 ...

    一个使用select实现的服务端包括数据包控制

    `select`函数在Unix-like操作系统中广泛用于多路复用I/O,允许程序同时监控多个文件描述符(如套接字)的状态,从而实现高效的并发处理。 1. **`select`函数详解**: `select`函数是多路复用I/O模型的一种,它的...

    socket select()用法

    对于这样的需求,`select()` 函数是一个非常实用且强大的工具,它允许开发者同时监控多个文件描述符的状态,从而有效地管理多路I/O操作。本文将详细介绍 `select()` 的工作原理、参数意义以及如何在Socket编程中运用...

    简单的Socket select模式源代码(server,client)

    `select`函数在Unix和类Unix系统中被广泛使用,它能够监控多个文件描述符(包括Socket)的状态,判断哪些描述符已经准备好进行读写操作。这种机制允许单个进程同时处理多个连接,提高了程序的并发能力。 首先,我们...

    Socket编程之Select模型.rar

    在多路复用I/O模型中,`select`模型是一种广泛使用的机制,用于处理多个套接字(Socket)的输入/输出事件。这个`Socket编程之Select模型.rar`压缩包包含了关于如何使用`select`函数进行Socket编程的易语言源码,这...

    Linux_c++_select_demo

    `select`是Unix和类Unix系统(包括Linux)中广泛使用的I/O多路复用机制,允许程序同时监控多个文件描述符(FD),等待它们准备好读写操作。这个demo是学习网络编程和并发处理的宝贵资源,特别是对于那些需要高效处理...

    Socket多路复用select

    `select`函数是Unix/Linux系统下用于实现I/O多路复用的重要API之一,它的主要功能是在多个文件描述符(File Descriptor,简称FD)之间轮询,检测哪些FD处于可读、可写或异常状态,从而允许程序在多个网络连接或其他...

    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 ...

    select函数实现一个服务器与多个客户端的通信

    在UNIX网络编程中,`select`函数是一种常用的I/O复用技术,它允许程序同时监控多个文件描述符(FDs)的状态,如读写就绪。这种机制在服务器设计中非常有用,特别是当服务器需要处理来自多个客户端的并发连接时。`...

    深入理解socket中的select模型

    在深入探讨socket编程时,select模型是一种常用的I/O多路复用技术,它允许程序监视多个文件描述符以查看它们是否处于可读、可写或异常状态。select模型在Unix系统中被广泛使用,是网络编程和多任务处理的重要基础。 ...

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

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

    [服务器性能优化]Linux下高并发socket最大连接数和sysctl(time_wait)设置

    - `net.ipv4.tcp_fin_timeout`:控制连接在FIN_WAIT_2状态下等待的时间,可适当缩短以释放资源。 - `net.ipv4.tcp_keepalive_time`:设置空闲连接的探测间隔,防止死连接占用资源。 在进行这些调整时,务必了解它们...

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

    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回射...

Global site tag (gtag.js) - Google Analytics