Linux:是否有从套接字读取或接收超时?

2023-11-23

如何尝试从套接字读取超时数据? 我知道,select、pselect、poll 有一个超时字段,但是使用它们会禁用 tcp reno 堆栈中的“tcp 快速路径”。

我唯一的想法是在循环中使用 recv(fd, ..., MSG_DONTWAIT)


您可以使用套索克选择设置接收操作超时的函数:

SO_RCVTIMEO

设置指定的超时值 输入的最长时间 函数等待直到完成。它 接受 timeval 结构 秒数和微秒数 指定多长时间的限制 等待输入操作 完全的。如果接收操作有 被屏蔽了这么久却没有 接收附加数据时,应 返回部分计数或 errno 如果没有则设置为 [EAGAIN] 或 [EWOULDBLOCK] 收到数据。对此的默认设置 选项为零,这表明 接收操作不得超时。 该选项采用 timeval 结构。 请注意,并非所有实现 允许设置此选项。

// LINUX
struct timeval tv;
tv.tv_sec = timeout_in_seconds;
tv.tv_usec = 0;
setsockopt(sockfd, SOL_SOCKET, SO_RCVTIMEO, (const char*)&tv, sizeof tv);

// WINDOWS
DWORD timeout = timeout_in_seconds * 1000;
setsockopt(socket, SOL_SOCKET, SO_RCVTIMEO, (const char*)&timeout, sizeof timeout);

// MAC OS X (identical to Linux)
struct timeval tv;
tv.tv_sec = timeout_in_seconds;
tv.tv_usec = 0;
setsockopt(sockfd, SOL_SOCKET, SO_RCVTIMEO, (const char*)&tv, sizeof tv);

据说在 Windows 上,这应该在调用之前完成bind。我已经通过实验验证了它可以在之前或之后完成bind在 Linux 和 OS X 上。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux:是否有从套接字读取或接收超时? 的相关文章

  • 没有特殊字符的密码验证器

    我是 RegEx 的新手 已经进行了大量搜索 但没有找到任何具体内容 我正在编写一个验证密码字符串的正则表达式 可接受的字符串必须至少具有 4 种字符类型中的 3 种 数字 小写字母 大写字母 特殊字符 我对包含有一个想法 也就是说 如果这
  • 如何从 Visual Studio 将视图导航到其控制器?

    问题是解决方案资源管理器上有 29 个项目 而且项目同时具有 ASP NET MVC 和 ASP NET Web 表单结构 在MVC部分中 Controller文件夹中有大约100个子文件夹 每个文件夹至少有3 4个控制器 视图完全位于不同
  • 随着时间的推移,添加到 List 变得非常慢

    我正在解析一个大约有 1000 行的 html 表 我从一个字符串中添加 10 个字符串 td 每行到一个list td
  • 如何从本机 C(++) DLL 调用 .NET (C#) 代码?

    我有一个 C app exe 和一个 C my dll my dll NET 项目链接到本机 C DLL mynat dll 外部 C DLL 接口 并且从 C 调用 C DLL 可以正常工作 通过使用 DllImport mynat dl
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • 有没有一种快速方法可以从 Jar/war 中删除文件,而无需提取 jar 并重新创建它?

    所以我需要从 jar war 文件中删除一个文件 我希望有类似 jar d myjar jar file I donot need txt 的内容 但现在我能看到从 Linux 命令行执行此操作的唯一方法 不使用 WinRAR Winzip
  • 两个静态变量同名(两个不同的文件),并在任何其他文件中 extern 其中一个

    在一个文件中将变量声明为 static 并在另一个文件中进行 extern 声明 我认为这会在链接时出现错误 因为 extern 变量不会在任何对象中看到 因为在其他文件中声明的变量带有限定符 static 但不知何故 链接器 瑞萨 没有显
  • 空指针与 int 等价

    Bjarne 在 C 编程语言 中写道 空指针与整数零不同 但 0 可以用作空指针的指针初始值设定项 这是否意味着 void voidPointer 0 int zero 0 int castPointer reinterpret cast
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • 如何在 Linq to SQL 中使用distinct 和 group by

    我正在尝试将以下 sql 转换为 Linq 2 SQL select groupId count distinct userId from processroundissueinstance group by groupId 这是我的代码
  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • 使用特定参数从 SQL 数据库填充组合框

    我在使用参数从 sql server 获取特定值时遇到问题 任何人都可以解释一下为什么它在 winfom 上工作但在 wpf 上不起作用以及我如何修复它 我的代码 private void UpdateItems COMBOBOX1 Ite
  • C++ 中的参考文献

    我偶尔会在 StackOverflow 上看到代码 询问一些涉及函数的重载歧义 例如 void foo int param 我的问题是 为什么会出现这种情况 或者更确切地说 你什么时候会有 对参考的参考 这与普通的旧参考有何不同 我从未在现
  • FileOutputStream.close() 中的设备 ioctl 不合适

    我有一些代码可以使用以下命令将一些首选项保存到文件中FileOutputStream 这是我已经写了一千遍的标准代码 FileOutputStream out new FileOutputStream file try BufferedOu
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置
  • 如何确定 CultureInfo 实例是否支持拉丁字符

    是否可以确定是否CultureInfo http msdn microsoft com en us library system globalization cultureinfo aspx我正在使用的实例是否基于拉丁字符集 我相信你可以使
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • 拖/放 UI 元素时 Android Studio 挂起

    我安装了 Android Studio 1 0 并拥有 JDK 1 8 我创建新项目 使用 带片段的空白活动 并将最低版本设置为棒棒糖 5 0 然后我转到fragment main xml并将一个UI元素拖到手机上 在示例中我使用了一个按钮
  • Angular 5 中的 RequestOptions 已弃用符号错误

    我正在尝试将 Angular 4 中的代码调整为 Angular 5 我做了很多更改 但有一个错误RequestOptions 该代码是关于身份验证的 这就是我遇到错误的地方 import Injectable from angular c
  • 使用反应钩子从父组件触发子函数

    我在父组件中有一些操作按钮 单击此类按钮之一时 我想触发子组件中的一个功能 目前 我正在尝试使用 useRef 钩子来实现它 但该解决方案似乎很乏味 并且还给了我警告 我当前的代码如下所示 import React useContext u
  • iostream线程安全,cout和cerr必须单独加锁吗?

    我知道 为了避免输出混合 多个线程对 cout 和 cerr 的访问必须同步 在同时使用 cout 和 cerr 的程序中 单独锁定它们是否足够 或者同时写入 cout 和 cerr 仍然不安全 编辑澄清 我知道 cout 和 cerr 在
  • Django 抽象模型与常规继承

    除了语法之外 使用 django 抽象模型和使用 django 模型的普通 Python 继承有什么区别 优点和缺点 更新 我认为我的问题被误解了 我收到了关于抽象模型和继承自 django db models Model 的类之间差异的回
  • C# dotnet core 2 将数据从中间件/过滤器传递到控制器方法

    目前我们正在使用 dotnet core 2 编写一个 Web 应用程序 我们实际上创建了某种多托管平台 可以根据传递到应用程序的 URL 注册新客户端 然而目前我们想要创建一个中间件 过滤器来验证我们的客户端 实际上我们想要做的是从数据库
  • Where 子句应用于多种模式

    我有一个具有多种模式的函数 我有两个或多个共享相同的表达式 我想替换它们 现在如果我写一个where子句在底部 缩进它并定义一个新变量 因为我想替换它的表达式不起作用 Example myFunction firstParam second
  • CS0019 运算符不能应用于“bool”和“int”类型的操作数

    该程序是为了响应作业 创建一个名为Sum 接受任意数量的整数参数并且 显示它们的总和 写一个Main 方法证明了Sum 当传递一个 三个 五个或十个整数的数组时 方法可以正常工作 将程序另存为UsingSum cs 来自 Microsoft
  • 如何将

    如何将日本纪元日期字符串输入解析为LocalDate LocalDateTime通过 Java 8 DateTime API 日本日历日期示例 明治23年11月29日 昭和22年5月3日 平成23年3月11日 金 14時46分 令和5年1月
  • 从网络共享运行“部分受信任”的 .NET 程序集

    当我尝试运行 NET 程序集时 boo exe 从网络共享 映射到驱动器 它会失败 因为它仅部分受信任 Unhandled Exception System Security SecurityException That assembly
  • 为什么 C# 扩展方法必须在静态类中定义? [复制]

    这个问题在这里已经有答案了 我知道 C 扩展方法必须是静态的 我不明白的是为什么这些扩展不能在非静态类或通用类中定义 更新 我对这个设计决策背后的原因感兴趣 这更多的是一种观察而不是答案 但是 当您调用实例方法时 对您正在调用的对象的引用将
  • 使用 mongoDB 将嵌入文档与父字段进行比较

    考虑以下集合 其中父文档有一个amount具有值的字段100000并且有一个嵌入的具有相同字段的文档数组amount和相同的值 id ObjectId 5975ce5f05563b6303924914 amount 100000 offer
  • 通过NAT访问SQL Server实例

    我正在尝试访问通过 IP NAT 映射公开的 SQL Server 所有端口均开放 我不知道 NAT 的详细信息 是否相关 因为那是公司其他地方隐藏在一堆繁文缛节中的内容 这就是我的想法 当您尝试访问 SQL Server 的命名实例时 客
  • 内容://sms/sent/ 不起作用

    这是短信观察者代码 我只需要检查发送的短信 当我使用content sms 我得到结果了 但为什么我使用时没有得到结果content sms sent 我使用的是安卓2 1 import android app Service import
  • 如何获取字符串的宽度(以像素为单位)?

    我正在使用 wxPython 的 HyperTreeList 我想将列宽设置为恰好等于其中最大字符串的长度 为了实现这一点 我想将 python 字符串大小转换为像素 例如 如果我们有一个像这样的字符串 str python len str
  • 与所有子域 codeigniter 共享会话数据

    我正在尝试使用一个session我所有子域的数据 我创建了一个subdomain in cpanel像这样 mydomain in and my mydomain in使用与我相同的路径mydomain in例子 mydomain in使用
  • 如何在我的电脑上运行php文件

    谁能告诉我如何在我的系统上本地运行 php 文件 目前我正在使用服务器来运行文件 我知道要安装 php 和 Apache 我需要查看该程序的输出 例如 如果我需要更多内容 您能告诉我如何运行这些文件吗 php 有一个简单的方法来运行轻量级服
  • 在 QMainWindow 中选择“中央小部件”的规则是什么?为什么它很重要?

    我明白设置CentralWidget需要在Q主窗口乍一看 中央小部件的含义似乎非常不言自明 但有没有更严格的定义 central 比如说 我有几个同样重要的小部件位于窗口的中央区域 我是否应该始终找到一种方法将它们分组在一起并将该组设置为中
  • PHP filemtime 函数 - “统计失败”

    我的 PHP filemtime 函数有问题 在我的网络应用程序中 我使用带有缓存选项的 Smarty 模板引擎 在我的网络应用程序中 我可以执行一些会产生错误的操作 但让我们只关注一个操作 当我单击页面上的链接时 某些内容会更新 我可以单
  • Linux:是否有从套接字读取或接收超时?

    如何尝试从套接字读取超时数据 我知道 select pselect poll 有一个超时字段 但是使用它们会禁用 tcp reno 堆栈中的 tcp 快速路径 我唯一的想法是在循环中使用 recv fd MSG DONTWAIT 您可以使用