通过 AcceptEx() 连接的套接字的 TCP 关闭

2023-11-25

的文档AcceptEx() says:

当此操作成功完成后,sAcceptSocket 可以 已通过,但仅限以下功能:

  • ReadFile
  • 写文件
  • send
  • WSASend
  • recv
  • WSARecv
  • 传输文件
  • 封闭式插座
  • setsockopt(仅适用于SO_UPDATE_ACCEPT_CONTEXT)

请注意shutdown()不在列表中。确实,调用shutdown(sAcceptSocket, SD_SEND)回报SOCKET_ERROR and WSAGetLastError()产生错误WSAENOTCONN:

发送或接收数据的请求被禁止,因为套接字未连接并且(使用 sendto 调用在数据报套接字上发送时)未提供地址。

为什么不能关闭通过以下方式连接的套接字AcceptEx()?另外,为什么套接字没有显示为已连接,因为它已经在接收数据(重叠操作已完成,完成通知表明某些size>0收到字节)?


你必须打电话setsockopt(SOL_SOCKET, SO_UPDATE_ACCEPT_CONTEXT) after AcceptEx()完成。接受的套接字并不与侦听套接字的属性完全关联,因此不会处于完全连接状态,直到SO_UPDATE_ACCEPT_CONTEXT已设置。一些 winsock API 函数受此影响,包括getpeername(), getsockname() and shutdown().

如果你使用ConnectEx()要建立出站连接,您必须调用setsockopt(SOL_SOCKET, SO_UPDATE_CONNECT_CONTEXT) after ConnectEx()在您可以使用之前完成shutdown()。这是记录的行为在 MSDN 上。它并没有说同样的话AcceptEx() and SO_UPDATE_ACCEPT_CONTEXT, but shutdown()对于接受的套接字确实有类似的限制AcceptEx().

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

通过 AcceptEx() 连接的套接字的 TCP 关闭 的相关文章

随机推荐

  • 为什么在构造标准中使用前缀增量被认为比后缀增量更好

    我最近安装了格子风格插件Eclipse并且个人认为非常棒 但它给我的警告之一有点晦涩难懂 确切的警告是 使用 不允许 这是关于postfix的 在某些行中 例如 for int i 0 i lt SOMETHING i 好的 我知道fore
  • C# Windows7/Vista风格ListView

    when I create a ListView in details view in VS2008 it creates a rather old looking listview It doesnt have any of the fa
  • 用 C 或 C++ 创建目录

    如何用C代码创建目录 除了fork和使用mkdir的方法 有类似 dirent h 的东西吗 dirent h 只允许读取目录 不使用外部库 Use the mkdir 函数 include
  • 我可以将一个方法作为java中另一个方法的参数传递吗?

    我正在尝试测量几种方法的执行时间 所以我想创建一个方法而不是多次重复相同的代码 这是我的代码 private void MeasureExecutionTime Method m startTime System nanoTime try
  • Android:如何构建像 Android UI 页面上显示的选项卡

    因此 android 不遗余力地构建了这个漂亮的 UI 指南供每个人使用 但我没有看到任何地方显示如何构建这些元素的代码示例 可以在此处找到选项卡的 UI 指南 http developer android com design build
  • char数组的内存分配

    假设你有 struct Person char name int age int height int weight 如果你这样做 struct Person who malloc sizeof struct Person C 如何知道要分
  • 我可以在 Entity Framework Core 中的连接数据库上触发事件吗?

    我有一个 DbContext 可以访问我的 Postgresql DB 但是当连接会话与 DB 启动时 我需要运行一个小 SQL 命令 我需要为每次交互执行此操作 更具体地说 它是一个用于设置记录用户名的会话变量的函数 可以在 EF Cor
  • 如何在不注册的情况下使用 Win32 中的 .Net 程序集?

    我想从 Delphi Win32 应用程序动态加载和使用用 C 创建的 Net 程序集 我的类和接口被标记为 ComVisible 但我想避免注册程序集 这可能吗 附 我在这里找到了链接文本关于该主题的另一个很好的讨论 但它更多地围绕托管
  • 自定义元素的绑定上下文 - 它到底是什么,如何访问父虚拟机

    我在文档中找不到答案 所以我在这里提问 传递给的绑定上下文到底是什么bind自定义元素的方法 它简单地等于路由器当前活动的 ViewModel 至少 这是我到目前为止所发现的 为什么它不是元素的父级 就 DOM 而言 VM 用这个代码 cu
  • 如何弯曲CGMutablePath?

    具有以下形状 我想知道你如何让它像这样弯曲 也类似 我假设所有的圆 线都被打包成一个CGMutablePath 然后对它应用某种曲线 圆弧或四边形曲线 尽管我很难复制它 有谁知道如何做到这一点 在第一个示例中 您从具有多个闭合子路径的路径开
  • 用于处理文件路径的 Qt 类[重复]

    这个问题在这里已经有答案了 可能的重复 Qt 相当于 PathAppend Qt 中有处理文件路径的类吗 特别是我正在寻找像 NET 的 Path Combine 这样的东西 我知道 boost filesystem 中有一个 但我想知道
  • Scala 开关在成功匹配后继续匹配下一个案例

    我该如何在 scala switch 语句中执行一个 case 块后开始执行另一个 case 块 在java中 没有中断的情况 switch step case 0 do something case 1 do something more
  • .dll 文件无法访问

    我正在尝试将 dll 添加到我的项目中 当我 添加引用 并尝试添加它时 它告诉我 无法添加对 的引用 请确保该文件 可访问 并且它是有效的程序集或 COM 组件 顺便说一句 我正在尝试添加 g729 dll 我怎样才能添加dll 你必须re
  • 垂直进度条

    VS 2005 SP3 我曾多次使用进度条 但是 我需要一个垂直的 但是 我找不到任何可以旋转它的属性 进度条是否始终处于水平位置且无法更改 非常感谢 尝试这个 public class VerticalProgressBar Progre
  • PHP 和 MySQL 之间的周数差异

    我有以下查询 SELECT COUNT WEEK date YEAR date FROM myTable GROUP ON YEAR date WEEK date 假设它产生以下结果 32 33 2012 43 34 2012 39 35
  • 将彩色控制台输出捕获到 WPF 应用程序中

    如同这个问题 除了 WPF 应用程序中包含的控制台程序会生成彩色输出 因此如果我能够捕获颜色和文本 那就太好了 这是我的第一个 WPF 程序 我不知道如何查找 修改正确的控件 目前我只是使用一个 TextBox 它可以工作 但只能捕获纯文本
  • 如何配置 Geany 来编译和运行我的 Python 程序?

    在 构建 菜单下 我可以看到 执行 选项 但它是灰色的 唯一可用的选项是 设置包含和参数 当我单击时 两个字段都已填写 我必须在那里写什么 I don t need to configure anything in Geany I just
  • 寻找一种使用 NSArray 作为一堆按钮的插座的方法

    我的用户界面有四个按钮 它们都会共享一些共同的行为 例如跟踪区域创建之类的事情 我正在寻找的是一个解决方案 所以我不必这样做 interface MyController NSWindowController NSButton button
  • 带有选项卡和 Viewpager 的 Android Fragments

    我们正在构建一个如上所示的具有片段嵌套的应用程序 选项卡特色 详细信息选项卡和地图选项卡 详细信息选项卡将有一个幻灯片 就像 查看页面滑块 和下面可滚动的信息 地图选项卡将显示地图 我已经实现了选项卡 地图以及滑块 如上所示 现在我很困惑如
  • 通过 AcceptEx() 连接的套接字的 TCP 关闭

    的文档AcceptEx says 当此操作成功完成后 sAcceptSocket 可以 已通过 但仅限以下功能 ReadFile 写文件 send WSASend recv WSARecv 传输文件 封闭式插座 setsockopt 仅适用