C# 中套接字重用有什么好处

2024-03-23

我正在开发开源套接字服务器库:https://sourceforge.net/projects/socketservers/ https://sourceforge.net/projects/socketservers/

我想向这个库添加套接字重用功能。我已经实现了此功能的草案,但我在测试中没有看到任何好处。客户端与服务器进行 8 项 32K 连接断开并测量时间。但重用套接字和不重用套接字之间没有区别 - 此测试花费的时间相同。

我在测试中做错了什么?

重用套接字时服务器应该获得什么好处,以及如何衡量这种好处?


我可以从不受管理的角度解释会发生什么以及如何DisconnectEx()使用后,也许有人可以将其映射到托管场景。

在非托管代码中,您将使用DisconnectEx()为后续重用套接字AcceptEx() or ConnectEx()打电话,更有可能是前者。因此,您最初创建 x 套接字并使用以下命令发布重叠的异步接受操作AcceptEx()。当客户端连接到这些挂起的连接时,您将执行服务器的操作,然后在最后调用DisconnectEx()在套接字上并发布一个新的AcceptEx()使用该套接字。这避免了此时创建新套接字的需要,因此对服务器来说更加高效。性能差异可能非常小,但在接受大量短期连接的负载较重的服务器上值得拥有。

所以我建议你发布一些代码来显示你在调用后如何重用你的套接字Disconnect(true)在上面...

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

C# 中套接字重用有什么好处 的相关文章

随机推荐

  • IndexedDB - 什么是 Key、keyPath 和 indexName?

    我来自MySQL 习惯了传统的数据库表方案 我无法理解 IndexedDB 及其一些术语 我在文档中查找了这些定义 Key一种数据值 通过它在对象存储中组织和检索存储的值 索引名称要创建的索引的名称 keyPath要使用的索引的键路径 基本
  • 使用构建器和 MapStruct 将 null 值映射到默认值

    我想映射字段Source to Target类 如果源值为null 我想根据数据类型将其转换为默认值 表示字符串 0表示数字类型等 为了设置值 我没有使用常规设置器 而是使用构建器 带有protobuf https developers g
  • HTML 5 页面转换

    我想在页面之间进行漂亮 现代的过渡 我找到了这个教程 http www onextrapixel com 2010 02 23 how to use jquery to make slick page transitions http ww
  • 条形码(Code 128)字体有问题无法扫描

    很容易生成一个3 of 9 http www squaregear net fonts free3of9 shtml条形码使用Font Font f new Font Free 3 of 9 80 this Font f Label l n
  • 参数数量变化的多项式函数

    是否有可能 在Python中 定义参数数量不断变化的多项式类型的函数 参数的数量应该根据我的输入文件中的数据系列的数量而变化 目前我有这样的事情 def y x a0 x2 x3 x4 y a0 a1 x a2 x 2 a3 x 3 ret
  • 我怎样才能在 bouncyCastle 中做到这一点(获取安装的证书)?

    好吧 我对 bouncyCastle 的加密世界还很陌生 也许是一个心理障碍 我似乎找不到 google for 相当于 X509Store store new X509Store StoreName My StoreLocation Cu
  • 有没有更快的方法在 OpenCV 中应用亮度?

    在我的应用程序中 我有以下代码 它将像素的亮度更改 20 for int y 0 y lt src rows y for int x 0 x lt src cols x for int c 0 c lt 3 c src at
  • Typescript:如何在 React 组件中设置子项的类型?

    我可以在 TypeScript 中设置子项的类型吗 例如我有这样的组件 class UserProfile extends React Component lt id number void gt class Thumbnail exten
  • 道场:道场 onblur 事件

    我有一个 dojo 1 5 的表单设置 我正在使用 dijit form ComboBox 和 dijit form TextBox 组合框具有 汽车 自行车 摩托车 等值 文本框是组合框的形容词 因此 组合框中的内容并不重要 但如果组合框
  • C# 修改身份或添加声明

    应用程序是 Blazor Server NET Core 5 0 我正在使用 NET Core 的身份系统 但遇到了问题 我希望将这个人的名字与身份一起存储 以便我可以轻松地调用它 目前我有一个类覆盖基本身份 public class Ap
  • 如何访问 Firefox Web 控制台命令历史记录?

    在 Google Chrome 开发工具中访问最后 30 个 javascript 控制台命令相当容易 取消对接开发工具并按Ctrl Shift I在其中检查 devtools 本身 在新的开发工具窗口中 在控制台中键入以下命令 gt lo
  • 如何删除 MongoDB 中的所有数据库?

    I have a list of databases in my MongoDB How to delete all databases except local admin and config 您可以使用getDBNames 方法中的m
  • iphone sdk 4.2.1 的问题

    可能是个愚蠢的问题 当在调试模式下在设备上运行我的项目时 我收到很多警告 其中包含以下字符串 警告 无法读取符号 Developer Platforms iPhoneOS platform DeviceSupport 4 2 1 8C148
  • 创建 Date 对象时是否应该使用“final”修饰符? [复制]

    这个问题在这里已经有答案了 可能的重复 什么时候应该使用final https stackoverflow com questions 154314 when should one use final Java 程序员什么时候更喜欢使用 f
  • URL 中带有斜杠“/”的路由参数

    我知道您可以在路由属性中应用通配符以允许 例如日期输入例如 Route orders orderdate 通配符的问题仅适用于 URI 中的最后一个参数 如果想要具有以下 URI 我该如何解决该问题 Route orders orderda
  • C#:WebRequest 代理 = null 副作用

    有谁知道吃药有什么副作用吗webrequest proxy null在 HttpWebRequest 中 MSDN NET Framework 4 说要使用GlobalProxySelection GetEmptyWebProxy 当不应该
  • 这应该是这样的吗?

    我的服务器上有这段代码here http smplsite com sandbox2 process asmx 是的 我知道 ASMX 是一个坏主意 但 WCF 由于某种原因根本不起作用 using System Web using Sys
  • 通过 Drupal 执行查询时 Apache Solr 结果不同 – 为什么?

    我正在尝试创建一个自定义搜索界面阿帕奇 索尔 http lucene apache org solr using Drupal http drupal org 我对结果有一些奇怪的问题 当我从 Solr 的内置 Web 界面运行它时 相同的
  • Magento - 客户地址国家/地区下拉列表问题

    我正在使用 Magento CE 1 7 0 2 最近从 1 4 2 0 升级 在后端编辑 创建客户地址时 国家 地区下拉字段为空 无法选择任何选项 它也不适用于前端地址下拉列表 任何想法导致此问题 我能找到的唯一代码提示是 this de
  • C# 中套接字重用有什么好处

    我正在开发开源套接字服务器库 https sourceforge net projects socketservers https sourceforge net projects socketservers 我想向这个库添加套接字重用功能