配置套接字 ACK 超时?

2024-02-13

有没有办法配置套接字在决定连接失败之前期望收到已发送数据的 ACK 的超时?

我知道这也可以在应用程序级别完成,但是由于我发送的每个数据包都已被确认,并且我只想知道是否收到了我的数据,因此在应用程序级别使用附加数据来完成相同的任务事情似乎很浪费。 (更不用说,我的特定应用程序使用按字节收费的蜂窝链接。)

Note:根据我之前的问题——什么情况会导致 NetworkStream.Write 阻塞? https://stackoverflow.com/questions/7667254/what-conditions-cause-tcpclient-write-to-block——你不能依赖.Write抛出异常以确定数据未正确发送。


一些 IETF RFC 中提到了“用户超时”(5482 http://datatracker.ietf.org/doc/rfc5482/ 793 http://datatracker.ietf.org/doc/rfc793/)它执行所要求的操作。

不幸的是,其他一些操作系统支持将此作为套接字选项,但 Windows 不支持。

如果没有此选项,在这种情况下减少中止时间的唯一方法是减少重传尝试的次数,或减少初始 RTT。

在 Windows 上,前者可以通过 netsh/registry 进行控制(机器范围......):Tcp 最大数据重传数 http://technet.microsoft.com/en-us/library/cc938210.aspx.

是否可以通过自己的超时来放弃当前连接,并在需要时建立另一个连接?

  • 应用程序必须确定何时放弃连接 - 可能在 TCP 会话开始时根据不活动时间或有效数据速率确定一些“生存时间”
  • 由于旧连接的重传,会产生一些数据开销
  • 服务器应用程序可能需要更改以接受多个并发连接
  • 客户端不应无限期地重复此过程,以防网络永远无法达到超时所需的足够速度
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

配置套接字 ACK 超时? 的相关文章

  • WPF 中的屏幕分辨率问题?

    我将在 WPF 中使用以下代码检测分辨率 double height System Windows SystemParameters PrimaryScreenHeight double width System Windows Syste
  • clang 格式换行符在错误的位置

    给出以下代码行 get abc manager get platform status abc platform status sw update status fill update status actions allowed stat
  • Subversion 和 Visual Studio 项目的最佳实践

    我最近开始在 Visual Studio 中处理各种 C 项目 作为大型系统计划的一部分 该系统将用于替换我们当前的系统 该系统是由用 C 和 Perl 编写的各种程序和脚本拼凑而成的 我现在正在进行的项目已经达到了颠覆的临界点 我想知道什
  • 将字节数组转换为托管结构

    更新 这个问题的答案帮助我编写了开源项目GitHub 上的 AlicanC 现代战争 2 工具 https github com AlicanC AlicanC s Modern Warfare 2 Tool 你可以看到我是如何阅读这些数据
  • 如何尝试/捕获所有异常

    我正在完成由其他人启动的 UWP 应用程序 该应用程序经常崩溃 我总是陷入困境应用程序 at if global System Diagnostics Debugger IsAttached global System Diagnostic
  • 为什么大多数平台上没有“aligned_realloc”?

    MSVC有自己的非标准函数 aligned malloc aligned realloc and aligned free C 17和C11引入了 std aligned alloc 其结果可以是de分配有free or realloc B
  • SFINAE 如何使用省略号?

    过去 当使用 SFINAE 选择构造函数重载时 我通常使用以下内容 template
  • 带 If 的嵌套 For 循环的时间复杂度

    void f int n for int i 1 i lt n i if i int sqrt n 0 for int k 0 k lt pow i 3 k do something 我的思考过程 执行if语句的次数 sum i 1 to
  • 两种类型的回发事件

    1 我发现了两篇文章 每篇文章对两种类型的回发事件的分类都略有不同 一位资源说两种类型的回发事件是Changed事件 其中控件实现 IPostbackDataHandler 当数据在回发之间更改时触发 然后Raised事件 其中控件实现 I
  • 从 Code::Blocks 运行程序时出现空白控制台窗口 [重复]

    这个问题在这里已经有答案了 当我尝试在 Code Blocks 中构建并运行新程序时 控制台窗口弹出空白 我必须单击退出按钮才能停止它 它对我尝试过的任何新项目 包括 Hello world 都执行此操作 奇怪的是 它对于我拥有的任何旧项目
  • C# 中的常量和只读? [复制]

    这个问题在这里已经有答案了 可能的重复 const 和 readonly 之间有什么区别 https stackoverflow com questions 55984 what is the difference between cons
  • 如何随着分辨率的变化自动调整大小和调整表单控件

    我注意到某些应用程序会更改控件的位置以尽可能适应当前的分辨率 例如 如果窗口最大化 则控件的设置方式应使整个 GUI 看起来平衡 是否可以使用 C 在 Visual studio 2010 中制作或实现此功能 Use Dock http m
  • 从 R 到 C 处理列表并访问它

    我想使用从 R 获得的 C 列表 我意识到这个问题与此非常相似 使用 call 在 R 和 C 之间传递数据帧 https stackoverflow com questions 6658168 passing a data frame f
  • 为什么要在 C++ 中使用 typedef?

    可以说我有 set
  • 如何引用解决方案之外的项目?

    我有一个 Visual Studio C 解决方案 其中包含一些项目 其中一个项目需要引用另一个不属于解决方案的项目 一开始我引用了dll
  • Visual Studio 2017 完全支持 C99 吗?

    Visual Studio 的最新版本改进了对 C99 的支持 最新版本VS2017现在支持所有C99吗 如果没有 C99 还缺少哪些功能 No https learn microsoft com en us cpp visual cpp
  • 为什么 Linux 对目录使用 getdents() 而不是 read()?

    我浏览 K R C 时注意到 为了读取目录中的条目 他们使用了 while read dp gt fd char dirbuf sizeof dirbuf sizeof dirbuf code Where dirbuf是系统特定的目录结构
  • 为什么文件更新时“如果较新则复制”不复制文件?

    我在 Visual Studio Express 中有一个解决方案 如下所示 The LogicSchemaC 中的类 将在运行时解析指定的 XML 文件 以下是在main的方法Program cs LogicSchema ls new L
  • C++、三元运算符、std::cout

    如何使用 C 用三元运算符编写以下条件 int condition1 condition2 condition3 int double result int or double std cout lt lt condition1 resul
  • C#中为线程指定特殊的cpu

    我有 2 个线程 我想告诉其中一个在第一个 cpu 上运行 第二个在第二个 cpu 上运行 例如在具有两个 cpu 的机器中 我怎样才能做到这一点 这是我的代码 UCI UCIMain new UCI Thread UCIThread ne

随机推荐

  • 从内部作用域访问外部作用域

    我有一个看起来有点像这样的类型 var x function this y function this z function this A function CALLING POINT 从调用点 我尝试调用函数 this y 我不需要传递任
  • Node JS 读取缓冲数据

    由于某种原因 当我向端口发送消息并尝试通过缓冲区读取它时 它总是挂起socket on end 似乎永远无法达到 有任何想法吗 var net require net var buffer var server net createServ
  • Android监听应用程序中的所有事件

    我想监听手机上的所有用户事件 例如onTouch onClick onMenuItemClickedETC 为此 我创建了一个扩展活动的超级类 所有活动都从该类扩展 public class TopActivity extends Acti
  • 如何删除 MongoDB 中的 _id 并替换为另一个字段作为主键?

    我收藏了大量文件 我想从所有文档中删除自动生成的对象 ID id 键 并将其替换为另一个字段作为主键 我不明白为什么首先需要一个默认的对象 ID 在 mongodb 中 每个文档必须是唯一的 因此您需要一个唯一的字段来用作 id 如果您不提
  • 在原型中,如何将地图定义为自定义选项

    在我的原型文件中 我想将地图定义为自定义选项 尝试了一些方法 但没有一个起作用 我的元数据原型文件 syntax proto2 import google protobuf descriptor proto package com util
  • Android 中的滚动与 WebView 完美配合

    我有一个布局 我正在通过 WebView 在其中渲染 HTML 文档 XML 布局是
  • 如何重命名 ASP.NET 5 Web 项目中用作 Web 根目录的“wwwroot”文件夹

    我想将 ASP NET 5 项目中的 Web 根文件夹重命名为wwwroot 当我手动重命名该文件夹时 项目不再将其识别为 Web 根文件夹 项目属性页面不允许修改 Web 根目录 有没有办法重命名和 或重新分配 ASP NET 5 Web
  • 在 CSS 网格中从底部开始填充单元格

    我有一个 3 行的 CSS 网格 可能要填的项目还不到3个 我想从底部开始填 我创建了一个jsFiddle https jsfiddle net Lexogram vd7g4x5e 8 供你玩 但目前它无法达到我想要的效果 html bod
  • 在选项卡式窗口中显示输出

    我用 Java 为 Linux 开发了一个任务管理器 目前的输出显示在控制台中 而选项卡式窗口单独出现 这是使用 Java Swing 完成的 现在我希望控制台的输出显示在选项卡式窗口中 我该怎么做 有一些我用过的课程 一个用于任务管理器功
  • UITableView 滚动时单元格数据显示不正确

    我面临一些奇怪的问题 每当我滚动表格视图时 我的数据就会被其他单元格替换 每次 它都会被不同的单元格数据替换 我在这个替换中没有看到任何特定的模式 cell UITableViewCell alloc initWithStyle UITab
  • 如何将此node.js模块降级到特定版本并防止以后自动升级?

    我正在使用node js Nodemailer模块并遇到以下错误 错误 不支持的配置 将 Nodemailer 降级到 v0 7 1 或 请参阅迁移指南https github com andris9 Nodemailer migratio
  • HTML 详细信息/摘要元素标记样式

    我有一些 CSS 可以对详细信息元素中的摘要元素旁边的标记进行样式设置 CSS 本身工作得很好 但是 如果我在第一个详细信息元素中嵌套另一个详细信息元素 创建父详细信息元素和子详细信息元素 我的标记内容将无法正确切换 一旦我打开父元素 子标
  • Postcss - 颜色函数插件 - “无法从字符串解析颜色”

    使用以下 postcss 插件 postcss cssnext postcss 嵌套 postcss 颜色函数 使用以下颜色函数时 我经常遇到以下错误 Unable to parse color from string l 20 样式 cs
  • Winforms 到 WPF 的转换:BeginInvoke 到什么?

    这是我在 WinForms 中的旧代码 private void ValueChanged double inValue1 double inValue2 only manual mode for this driver so that s
  • 在没有循环的情况下找到两个向量中的最大值?

    如果有两个向量 比如说x and y for i in 1 length x z i max x i y i 你能帮我在不使用循环的情况下执行此操作吗 假设向量x and y具有相同的长度 pmax是你的函数 z pmax x y 如果长度
  • sql server中schema的重要性是什么?

    sql server中schema的重要性是什么 这个模式对我有什么帮助 出于安全原因这很重要吗 Yes SQL 模式的主要目的是促进安全管理 定义谁 哪些主体 可以访问什么 哪些数据库对象 从 SQL 2005 开始 当架构不再直接与所有
  • php shell exec wget 不在后台运行

    我想按如下方式运行 wget shell exec wget http somedomain com somefile mp4 sleep 20 continue my code 我想要的是让 PHP 等待 shell exec wget
  • 控制台应用程序相互通信的推荐方式是什么?

    我有一个用 C 编写的控制台应用程序系统 在不同的机器上运行 我用的是MSMQ 我的问题是 如何使我的控制台应用程序相互通信 我这样问是因为我想创建一个新的控制台应用程序 其他应用程序可以查询该应用程序以了解 MSMQ 中的消息数量 编辑1
  • 我可以在 pom 或 settings.xml 中包含 mvn deploy:deploy-file 而不是 cli goal

    我需要将自定义 jar 与从我的 Java 项目生成的 jar 一起部署到 Artifactory 目前我能找到的唯一方法是通过命令行目标使用 mvn deploy deploy file DgroupId
  • 配置套接字 ACK 超时?

    有没有办法配置套接字在决定连接失败之前期望收到已发送数据的 ACK 的超时 我知道这也可以在应用程序级别完成 但是由于我发送的每个数据包都已被确认 并且我只想知道是否收到了我的数据 因此在应用程序级别使用附加数据来完成相同的任务事情似乎很浪