GetQueuedCompletionStatus 永远阻塞

2023-12-28

我正在编写一个服务器应用程序,我想使用 IOCompletion 端口,因此我为服务器编写了一个原型,但我遇到了 GetQueuedCompletionStatus 的问题,它永远不会返回(它会阻塞)。下面是我的代码:

bool CreateSocketOverlappedServer()
{
  WSADATA wsaData;
  SOCKADDR_IN sockaddr;

  if(WSAStartup(MAKEWORD(2,2,),&wsaData)){
    _tprintf(_T("Unable to start up\n"));
    return false;
  }

  SrvSocket = WSASocket(AF_INET,SOCK_STREAM,0,NULL,NULL,WSA_FLAG_OVERLAPPED);
  if(SrvSocket==INVALID_SOCKET){
    _tprintf(_T("Unable to start socket\n"));
    return false;
  }

  sockaddr.sin_family = AF_INET;
  sockaddr.sin_port = htons(10000);
  sockaddr.sin_addr.s_addr = INADDR_ANY;

  /* now bind the socket */
  if(bind(SrvSocket, (SOCKADDR *)&sockaddr, sizeof(SOCKADDR_IN))==SOCKET_ERROR){
    _tprintf(_T("Unable to bind socket\n"));
    return false;
  }

  if(listen(SrvSocket, 5)==SOCKET_ERROR){
    _tprintf(_T("Error listening\n"));
    return false;
  }

  return true;
}

您没有正确使用完成端口,因此它没有任何作用,因此没有要报告的状态。将完成端口与套接字一起使用是一个两步过程,但您只执行了一半步骤。

阅读以下 MSDN 文章了解详细信息:

Windows Sockets 2.0:使用完成端口编写可扩展的 Winsock 应用程序 http://msdn.microsoft.com/en-us/magazine/cc302334.aspx

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

GetQueuedCompletionStatus 永远阻塞 的相关文章

  • Ruby on Rails:如何使用 TCP 套接字连接 GPS 设备

    ruby 2 3 0p0 2015 12 25 修订版 53290 x86 64 linux 轨道 4 2 4 我正在使用 cloud9 IDE 和 webrick 服务器 我的项目是实时跟踪GPS 我想使用TCP连接与GPS跟踪设备进行通
  • 使用 Windows 套接字的 WriteFile 返回无效参数错误

    我已经在 Windows 套接字上苦苦挣扎了两天 无法像在 Linux 中那样只使用写入套接字 我想编写自己的 shellcode 并且正在研究如何将 stdout stdin 重定向到套接字句柄 这就是我的演奏的来源 如果有必要 我使用
  • 套接字接收全部

    我正在尝试在 C 中捕获 ip 数据包 一切工作正常 除了我只收到传出的数据包 My Code using Socket sock new Socket AddressFamily InterNetwork SocketType Raw P
  • python-messaging 无法处理 HTTP 请求

    我正在使用下面的代码尝试使用 python messaging 发送彩信https github com pmarti python messaging blob master doc tutorial mms rst https gith
  • 套接字错误 10054

    我有一个C S程序 客户端使用socket向服务器发送文件 发送后大约超过700k数据 客户端 在win7上 将收到套接字10054错误 这意味着连接被对等方重置 服务器运行在CentOS 5 4上 客户端是在virtual box中运行的
  • Java 套接字:可以从一个线程发送并在另一个线程上接收吗?

    这可能是一个非常基本的问题 但我很难找到答案 让一个线程写入 Socket 的输出流 而另一个线程从 Socket 的输入流读取数据 这样可以吗 编辑 这是一个与外部服务器通信的客户端应用程序 我并不是想让两个线程互相交谈 很抱歉含糊不清
  • Python服务器“通常只允许每个套接字地址使用一次”

    我正在尝试用 python 创建一个非常基本的服务器 它侦听端口 当客户端尝试连接时创建 TCP 连接 接收数据 发回某些内容 然后再次侦听 并无限期地重复该过程 这是我到目前为止所拥有的 from socket import server
  • 套接字发送调用被阻塞很长时间

    我每 10 秒在套接字上发送 2 个字节的应用程序数据 阻塞 但发送调用在下面的最后一个实例中被阻塞超过 40 秒 2012 06 13 12 02 46 653417 信息 发送前 2012 06 13 12 02 46 653457 信
  • 错误号:11,资源暂时不可用

    我正在使用 c 套接字来实现可靠的 UDP 协议 我正在使用以下代码在等待确认的套接字上设置超时 我不确定为什么会收到 errno 11 资源暂时不可用 set timer for recv socket struct timeval tv
  • 在Python中通过套接字发送文件

    我正在尝试用 python 编写一个实现套接字的程序 每个客户端发送一个 PDF 文件 服务器接收该文件并将标题更改为 file number pdf 例如 file 1 pdf 出现的问题是只有客户端才能成功发送文件 当第二个客户端尝试发
  • 使用 Google App Engine 向防火墙后面的设备发起消息

    我想使用 Google App Engine 向位于防火墙 路由器 NAT 后面的设备发起 http 流量 这些设备将接收来自 GAE 的命令 我可以让设备轮询 GAE 来查找新消息 但这会占用大量流量 或者 我可以尝试永久保持打开连接 但
  • 使用 InputStream 通过 TCP 套接字接收多个图像

    每次我从相机捕获图像时 我试图将多个图像自动从我的 Android 手机一张一张地发送到服务器 PC 问题是read 函数仅在第一次时阻塞 因此 从技术上讲 只有一张图像被接收并完美显示 但在那之后当is read 回报 1 该功能不阻塞
  • 使用 TCP 时是否需要使用校验和来保护我的消息?

    使用 TCP 作为网络协议 在通过线路发送消息之前 我会为每条消息的大小 以及可能的校验和 添加前缀 我想知道 计算和传输消息的校验和是否有意义 以确保消息将被不变地传递 如果以及何时传递 例如因为一些网络错误 目前 我在发送消息本身之前发
  • 如何确定非阻塞套接字是否真正连接?

    这个问题不仅限于Python 这是一个一般的套接字问题 我有一个非阻塞套接字 想要连接到一台可访问的机器 在另一端 该端口不存在 为什么 select 仍然成功 我预计会超时 sock send 因管道损坏而失败 select 之后如何确定
  • Python SSLError:客户端错误(违反协议发生EOF),服务器端错误(SSL3_GET_RECORD:版本号错误)

    我在尝试在 Python 中创建 SSL 套接字以使用需要身份验证的代理时遇到一些困难 我是very抱歉篇幅较长 但我认为最好包含尽可能多的细节 首先 服务器代码如下所示 class ThreadedTCPServer SocketServ
  • Python套接字发送EOF

    我有一个简单的文件传输套接字程序 其中一个套接字发送文件数据 另一个套接字接收数据并写入文件我需要发送一个致谢一旦从目的地到源的传输完成 目的地代码 s accept f s makefile f read 1024 源代码 s conne
  • 套接字返回“没有这样的文件或目录”

    Linux 海湾合作委员会 4 4 2 我正在做一些套接字编程 但是 当我尝试从套接字函数分配 sockfd 时 我不断收到此错误 Socket operation on non socket 非常感谢您的任何建议 if defined l
  • Python:监听两个端口

    import socket backlog 1 Number of queues sk 1 socket socket socket AF INET socket SOCK STREAM sk 2 socket socket socket
  • socketcan如何处理仲裁?

    我非常了解 CAN 协议的工作原理 当两个节点尝试同时使用网络时 较低 id 的 CAN 帧会获得优先级 而另一个节点会检测到这一点并停止 当使用 socketcan 时 这似乎被抽象化了 我们只需像任何文件描述符一样写入和读取 我可能误解
  • 如何通过 Python socket.send() 发送字符串以外的任何内容

    我对 Python 编程非常陌生 但出于必要 我必须快速地将一些东西组合在一起 我正在尝试通过 UDP 发送一些数据 除了当我执行 socket send 时 我必须以字符串形式输入数据之外 一切都正常 这是我的程序 这样你就可以看到我在做

随机推荐

  • ILNumerics 在特定位置绘制平面

    我目前正在使用 ILNumerics API 并开始在立方体中绘制几个点 然后我通过这些点计算了一个回归平面 现在我想在相同的场景图中绘制平面 但大小仅与点云相同 我得到了平面的参数 a b c f x y a x b y c 我知道只有
  • 媒体播放器响应第二次点击暂停

    使用ViewPager进行图像滑动 每个图像onclick流不同的MP3 应用程序包括 50 个页面 图像 和 50 个不同的 mp3 所有 mp3 都存储在应用程序本身上 前任 第一页流 MP3 one 第二页流 MP3 two 依此类推
  • IE 打印时 iframe 在底部剪切

    在 IE11 上打印下面的页面时 会剪切底部的 iframe 而不是让它扩展到下一页 我怎样才能防止这种情况并让它打印所有内容 注意 要重现此问题 只需将以下代码粘贴到记事本中并在 IE 中打开即可 div a href h1 Print
  • quill可以限制上传图片的大小吗?

    由于图片较大 响应较慢 所以一定要限制 怎么做 谢谢 var editor new Quill postContent modules toolbar toolbar container theme snow placeholder 不超过
  • 实体框架从 SQL Server 视图返回损坏/交换数据

    我从 SQL Server 中的视图进行简单查询 SELECT PricePerM FROM RealtyStatParent ORDER BY PricePerM 当我在 SQL Management Studio 中执行查询时 我得到了
  • 如何在 docker 中创建和运行 .net Core 控制台应用程序

    我有一个 NET Core 2 1 控制台应用程序 我想在 Docker 映像中运行此控制台应用程序 我是 Docker 新手 只是想弄清楚它 这时候我就有了一个Dockerfile 其灵感来自微软的例子 https learn micro
  • 查找作为 c 中函数的参数接收的整数数组的大小[重复]

    这个问题在这里已经有答案了 我想找到作为参数传递给函数的整数数组的大小 这是我的代码 void getArraySize int arr int len sizeof arr sizeof arr 0 printf Array Length
  • 代号一中的文本屏幕,如何读取文本文件?

    我想向我的 Codename One 应用程序添加帮助屏幕 由于文本比其他字符串更长 我想将其放在单独的文件中并将其添加到应用程序包中 我该怎么做呢 我应该将文本文件放在哪里 以及如何轻松地将其一次性读取到字符串中 我已经知道如何将字符串放
  • 为什么我们要包含 stdlib.h?

    C功能malloc 定义如下stdlib h 如果我们不包含这个文件 它应该会给出一个错误 但是这个代码可以正常工作 但有一点警告 我的问题是 如果malloc 没有这个头文件也可以工作 那么为什么我们需要包含它呢 请帮助澄清我的概念 in
  • 模板专业化:非内联函数定义问题

    以下代码可以正确编译 include
  • ActionScript 属性 - 公共 Getter、受保护的 Setter

    是否有可能拥有一个具有公共 getter 和受保护 setter 的属性 我有以下代码 public class Mob extends Sprite snip private var health Number tried making
  • 有人可以向我解释一下 PHP 中的 pack() 函数吗?

    我想了解更多关于pack PHP 中的函数 https secure php net manual en function pack php https secure php net manual en function pack php
  • 如何在 Qt 中上移选定行

    我有一个QTableView有 3 行和 2 列 这里我使用的是QStandardItemModel 我想在单击 QPushButton 时向上 向下移动一行 如何在中向上 向下移动一行QTableView 感谢您的回复瓦汉乔 我已经尝试过
  • Android 中的 Mifare Ultralight C 身份验证 (2.3.6)

    我正在尝试验证 Mifare Ultralight C ISO IEC 14443 2 和 14443 3 A 型兼容 标签 我使用Android中提供的MifareUltralight transceive 函数发送身份验证命令 我还检查
  • 在 tomcat catalina.properties 中注入环境变量 [Kubernetes]

    我正在使用 kubernetes 进行 Web 应用程序部署 containers name myapp image tomcat8 jre8 latest imagePullPolicy Always env name DATABASE
  • 如何更改 Winforms 中的 TrackBar 刻度颜色?

    我有一个使用轨迹栏的 winforms 应用程序 BackColor 属性可以更改 但这样做会使每个 刻度 的颜色几乎不可见 我没有看到修改 勾号 颜色的显式属性 我是否缺少某些东西或改变蜱虫颜色的方法 TrackBar 是本机 Windo
  • Apollo 2.1 中的多重查询/变更

    我需要一些使用 Apollo 2 1 中新的查询和突变组件的帮助 尤其是多个查询和突变 我有以下问题 我有一个 graphql 请求 该请求取决于之前的 graphql 结果 我该如何处理这个问题 如何在已经有查询的组件中添加两个不同的突变
  • 设置 Linux 中可用物理内存总量的限制

    我知道我应该设置mem MEMORY LIMIT 但我不知道在运行时或启动时该去哪里 以便对操作系统控制的总物理内存设置限制 我正在运行 I O 基准测试 并且我想限制可用的总体物理内存量 我找到了我正在寻找的答案 基本上 设置总可用物理内
  • 关于tinymce的“windowManager.open”方法的“body”参数

    我正在查看这个创建tinyMCE插件的示例 我想做的是打开 弹出窗口 弹出窗口内的内容以编程方式指定 无需在特定 url 加载物理页面 在tinymce容器中添加type file的输入元素 https stackoverflow com
  • GetQueuedCompletionStatus 永远阻塞

    我正在编写一个服务器应用程序 我想使用 IOCompletion 端口 因此我为服务器编写了一个原型 但我遇到了 GetQueuedCompletionStatus 的问题 它永远不会返回 它会阻塞 下面是我的代码 bool CreateS