套接字是否可以仅针对 recv() 函数设为非阻塞?

2024-04-27

我希望能够打电话recv()不必阻塞,所以我想让它成为非阻塞,但我不希望它在发送数据时是非阻塞的。那么能否将套接字设为非阻塞?recv()函数,或者阻塞/非阻塞模式是否影响所有套接字函数?


对于 Windows,您可以使用ioctlsocket() https://msdn.microsoft.com/en-us/library/windows/desktop/ms738573%28v=vs.85%29.aspx将套接字设置为非阻塞模式。不幸的是,这些设置适用于套接字上的所有操作。因此,对于您的情况,您必须在接收和发送之间切换。

记录如下:对于 Linux,您可以使用MSG_DONTWAIT标志在recv() http://linux.die.net/man/2/recv调用参数。单个调用将是非阻塞的。

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

套接字是否可以仅针对 recv() 函数设为非阻塞? 的相关文章

  • 如何将十六进制字符串转换为十六进制数字[重复]

    这个问题在这里已经有答案了 可能的重复 如何将十六进制字符串转换为有符号整数 https stackoverflow com questions 3705429 how do i convert hex string into signed
  • 用户控件内所有控件均为空

    我有一个 UserControl 它使用 UserControl 以及其他控件 In the ascx文件我有以下代码
  • 访问“if”语句之外的变量

    我怎样才能使insuranceCost以外可用if陈述 if this comboBox5 Text Third Party Fire and Theft double insuranceCost 1 在 if 语句之外定义它 double
  • 如何在编译C代码时禁用警告?

    我正在使用 32 位 Fedora 14 系统 我正在使用编译我的源代码gcc 有谁知道如何在编译c代码时禁用警告 EDIT 是的 我知道 最好的办法是修复这些警告以避免任何未定义 未知的行为 但目前在这里 我第一次编写了巨大的代码 并且在
  • 导出类时编译器错误

    我正在使用 Visual Studio 2013 但遇到了一个奇怪的问题 当我导出一个类时 它会抛出 尝试引用已删除的函数 错误 但是 当该类未导出时 它的行为会正确 让我举个例子 class Foo note the export cla
  • 在 MATLAB 中创建共享库

    一位研究人员在 MATLAB 中创建了一个小型仿真 我们希望其他人也能使用它 我的计划是进行模拟 清理一些东西并将其变成一组函数 然后我打算将其编译成C库并使用SWIG https en wikipedia org wiki SWIG创建一
  • 以编程方式更新 ClickOnce 应用程序的部署清单会导致缺少 4.0 中所需的 <兼容框架> 元素

    我正在致力于自动化 NET 4 0 ClickOnce WPF 应用程序的安装程序 该应用程序需要在应用程序配置文件 我经历了寻找必须遵循的具体步骤的棘手过程Mage exe http msdn microsoft com en us li
  • 当IRQL下降时,Windows中如何触发软件中断?

    我知道对于硬件中断 当 KeAcquireInterruptSpinLock 调用 KeLowerIrql 时 HAL 会调整 LAPIC 中的中断掩码 这将允许自动服务排队的中断 可能在 IRR 中 但是对于软件中断 例如 ntdll d
  • 在VisualStudio DTE中,如何获取ActiveDocument的内容?

    我正在 VisualStudio 中编写脚本 并尝试获取当前 ActiveDocument 的内容 这是我当前的解决方案 var visualStudio new API VisualStudio 2010 var vsDTE visual
  • 设计 Javascript 前端 <-> C++ 后端通信

    在我最近的将来 我将不得不制作一个具有 C 后端和 Web 前端的系统 要求 目前 我对此了解不多 我认为前端将触发数据传输 而不是后端 所以不需要类似 Comet 的东西 由于在该领域的经验可能很少 我非常感谢您对我所做的设计决策的评论
  • 使用(linq to sql)更新错误

    我有两个表 通过外键 CarrierID 绑定 Carrier CarrierID CarrierName CarrierID 1 CarrierName DHL CarrierID 2 CarrierName Fedex Vendor V
  • 使用 foreach 循环和 XmlNodeList C# 将新节点附加到节点列表

    目前我处理的是这样的XML类型 XML FILE http 20drive google com open id 0By5BxgNi9eGcRldxcEZNU0FDTzQ 参考XML文件 我想检查一个节点 如果找不到该节点 我必须将该节点附
  • ASP.NET Core Razor Page 多路径路由

    我正在使用 ASP NET Core 2 0 Razor Pages 不是 MVC 构建系统 但在为页面添加多个路由时遇到问题 例如 所有页面都应该能够通过 abc com language 访问segment shop mypage 或
  • 在 C++ 和 Windows 中使用 XmlRpc

    我需要在 Windows 平台上使用 C 中的 XmlRpc 尽管我的朋友向我保证 XmlRpc 是一种 广泛可用的标准技术 但可用的库并不多 事实上 我只找到一个库可以在 Windows 上执行此操作 另外一个库声称 您必须做很多工作才能
  • 使用 Chrome 和 Selenium 设置 LocalStorage

    我正在尝试使用 OpenQA Selenium 和 Chrome 设置本地存储键和值 我认为这相当微不足道 但我似乎无法让它发挥作用 我对 C 很陌生 所以我可能错过了一些东西 无论如何 我有这个功能 public static void
  • 从有符号字符转换为无符号字符然后再转换回来?

    我正在使用 JNI 并有一个 jbyte 类型的数组 其中 jbyte 表示为有符号字符 即范围从 128 到 127 jbyte 表示图像像素 对于图像处理 我们通常希望像素分量的范围为0到255 因此 我想将jbyte值转换为0到255
  • g++ C++0x 枚举类编译器警告

    我一直在将可怕的 C 类型安全伪枚举重构为新的 C 0x 类型安全枚举 因为它们是way更具可读性 不管怎样 我在导出的类中使用它们 所以我明确地将它们标记为导出 enum class attribute visibility defaul
  • C# 粘贴到文本框时检查剪贴板中的字符

    有没有一些方法可以在粘贴到文本框 C 之前仅检查剪贴板中的字符 Ctrl V 和右键单击 gt 粘贴 但不使用 MaskedTextbox 在文本框文本更改中添加规则以仅接受数字 例如 private string value privat
  • 启动画面后主窗口出现在其他窗口后面

    我有一个带有启动屏幕的 Windows 窗体应用程序 当我运行该应用程序时 启动屏幕显示正常 消失并加载应用程序的主窗体 但是 当我加载主窗体时 它出现在包含该应用程序的 Windows 资源管理器目录下 这是运行启动画面然后运行主窗体的代
  • c# 模拟 IFormFile CopyToAsync() 方法

    我正在对一个异步函数进行单元测试 该函数将 IFormFile 列表转换为我自己的任意数据库文件类列表 将文件数据转换为字节数组的方法是 internal async Task

随机推荐

  • PHP:如果我以非静态方式调用静态方法怎么办?

    我不是面向对象编程专业人士 我有一个愚蠢的问题 class test public static function doSomething arg foo I ate your arg return foo 那么正确的调用方式doSomet
  • 使用 WinAPI 在 C# 中隐藏任务栏窗口

    相信我 我用谷歌搜索过它 并期望它是一个相当容易找到的东西 事实证明并非如此 我有窗把手 但没有表格 我该怎么做 谢谢 声明这些 DllImport user32 dll SetLastError true static extern in
  • LogStash 无法从许可证中检索许可证信息。响应代码“401”通过 URL“http://elasticsearch:9200/_xpack”联系 Elasticsearch

    我正在努力让 Docker LogStash 连接到 Docker ElasticSearch 并启用 xpack 安全性 主要日志有 logstash 1 2020 05 20T22 41 03 950 WARN deprecation
  • 单向绑定

    我知道这个问题存在 但我在答案中找不到解决方案 我有一个表单 其中数据绑定到自定义类 以便在更改表单时 自定义类会收到通知 相反的情况永远不会发生 myForm DataBindings Add Items ItemsController
  • 同时安装多个自制公式

    您可以通过安装多个自制程序brew install package1 package2 但是 如果您有一个文本文件 其中包含您想要安装的所有软件包 你会怎么做 brew install lt packages txt不起作用 它给了我回应
  • 节点 aws-sdk s3 文件上传大小

    当使用 Node js 的 aws sdk npm 插件时 我可以使用以下代码上传 50kb 的 pdf 到 AWS s3 var params Bucket BUCKET Key pdf key Body file ContentType
  • 如何使 React Native Android 应用程序崩溃

    我正在研究react native firebase crashlytics 我正在使用 rnfirebase 入门套件 在那里 我们将 crashlytics 与该项目集成 现在 我想让我的应用程序崩溃以检查崩溃报告 You need t
  • Rails 3.1 与 3.0 AJAX 语法差异。 jQuery 中的等效语句?

    完成 使用 Rails 进行敏捷 Web 开发 第 4 版并点击开始 AJAX 部分 第 11 章迭代 F2 在示例代码中 使用 Rails 3 0 的书籍建议创建 app views line items create js rjs 文件
  • Python——“对象布局”

    有人可以描述以下异常吗 什么是 对象布局 以及它是如何定义的 谢谢 Traceback most recent call last File test gui py line 5 in
  • 表面参数化

    我正在尝试在表面网格上获取参数化表面 从 STL 格式文件中读取 我阅读了 CGAL 示例目录提供的一些有关参数化的示例 我知道应该提供接缝线才能在任意表面上获得参数化表面 但我还是不明白如何制作接缝线 下面是我到目前为止的代码 总而言之
  • 检查 Web 服务中的 Json

    我的 json 有问题 我希望我的 Json 看起来像 data phoneId 1 token APA91bF2tN5g1TtULFE5tysRMAarygjX4w9hjTGCqT3SL PwiMV6aqTtkV3lpqLkc7msVfE
  • Google Sheets 转置具有多个值的数据

    我试图按如下方式显示示例数据 我可以使用数据透视表和多个值来完成此操作 没有任何问题 但希望找到一种使用查询或其他方法的方法 使用下面的公式部分解决了此问题 但不包括 其他 列 Index Transpose Unique Filter B
  • 为什么输出窗口无法显示结果。图像处理-线条检测

    该霍夫变换程序应该在执行时显示源图像 输出图像 带有图像的边缘检测结果窗口 但是 即使源图像和边缘检测结果 输出图像窗口也不会显示任何内容 链接https github com eToTheEcs hough transform blob
  • Spring Data Redis JedisConnectionException:流意外结束

    雷迪斯3 0 5Spring数据Redis 1 3 6绝地武士2 6 3 我们的 Web 应用程序通过 pub sub 从 Redis 接收数据 还以键 值对的形式在 Redis 上执行数据读 写 读 写发生在监听线程 独立监控线程和htt
  • 如何解决 CruiseControl.NET 中 任务中的“只能指定一个项目”错误

    我正在尝试以相当直接的方式使用 CruiseControl NET 版本 1 3 0 2918 中的任务
  • 更改数据的时区值

    我必须导入不带时区信息的数据在其中 但是 我知道我要导入的数据的具体时区 但我需要timestamp with time zone数据库中的格式 一旦我导入它并将时间戳数据类型设置为timestamp with time zone Post
  • Nancyfx 通过 HTTPS 自托管

    我尝试以自托管模式启动 nancyfx 网络服务器 执行以下代码时一切正常 public static void Main string args var hostConfig new HostConfiguration UrlReserv
  • 如何在 .NET 中操作 VB6 集合?

    我目前正在为 NET 软件设计一个接口 该接口将由 COM 对象 特别是 VB6 使用 虽然我找到了 Microsoft 的许多页面 详细介绍了如何创建 COM 互操作接口 但我目前在设计时对 Collections 的使用感到困惑 我希望
  • ANDROID NDK - android:找不到命令

    我试图完成 Android NDK 中提供的第一个示例练习 我试图在 cygwin 上运行以下命令 android update project p 然而 我得到android command not found error 我检查了我的
  • 套接字是否可以仅针对 recv() 函数设为非阻塞?

    我希望能够打电话recv 不必阻塞 所以我想让它成为非阻塞 但我不希望它在发送数据时是非阻塞的 那么能否将套接字设为非阻塞 recv 函数 或者阻塞 非阻塞模式是否影响所有套接字函数 对于 Windows 您可以使用ioctlsocket