问题标签 [overlapped-io]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
6057 浏览

c++ - 为什么称为重叠 I/O?

我能找到的只是有关如何使用重叠 I/O 的教程,但我找不到为什么会这样称呼它。

是不是因为例如我可以从套接字读取一些东西,然后在第一次读取必然返回读取的字节之前读取其他东西?

0 投票
1 回答
487 浏览

c++ - 重叠 I/O 与阻塞和非阻塞套接字的概念有何关系?

我想知道使用重叠 I/O 是否意味着我在非阻塞模式下使用套接字,或者阻塞和非阻塞套接字的概念与重叠 I/O 的概念无关。

0 投票
3 回答
178 浏览

c++ - 客户端是否也使用了重叠 I/O?

我认为 Overlapped I/O 的发明是为了在服务器端使用,主要是为了能够处理数千个客户端。所以我认为没有任何理由在客户端使用它。我的假设正确吗?

0 投票
2 回答
2420 浏览

c++ - 我应该使用 AcceptEx() 还是 WSAAccept()?

我正在使用 Overlapped IO,我想使用阻塞调用来接受客户端连接,就像我使用普通的accept(). 我不确定,但我认为这AcceptEx()不会阻塞,而WSAAccept()会阻塞。那么WSAAccept()类似于accept()?

0 投票
1 回答
544 浏览

c++ - 为什么 GetQueuedCompletionStatus() 不返回操作类型?

GetQueuedCompletionStatus()出队完成通知,但它不返回它是什么类型的通知(例如读取通知,写入通知)。

我有责任跟踪我启动的操作,例如,当我使用 时WSARecv(),我在结构中添加一个标志OVERLAPPED,指示这是什么操作(在这种情况下读取),当我出列通知时,我读取了这个标志. 那么有谁知道为什么GetQueuedCompletionStatus()不返回操作类型?

0 投票
0 回答
431 浏览

c++ - 允许的未完成重叠 I/O 请求的最大数量是多少?

在 Overlapped I/O 的上下文中,WSASend()可以返回错误代码WSAEWOULDBLOCK,它表示:

Overlapped sockets:有太多未完成的重叠 I/O 请求。

是否定义了未完成的重叠 I/O 请求的最大数量,还是取决于许多标准,例如可用内存、Windows 版本等。

0 投票
1 回答
173 浏览

c++ - 在谈论重叠 I/O 时,上下文信息意味着什么?

在文档中WSARecv(),它说:

如果 lpCompletionRoutine 不为 NULL,则 hEvent 参数将被忽略,应用程序可以使用该参数将上下文信息传递给完成例程。

“上下文信息”是什么意思?我认为这意味着我通常会为每个套接字关联一个数据结构,该数据结构可以包含套接字句柄和接收缓冲区等成员。因此,当我调用时,WSARecv()我将向它传递一个指向此数据结构实例的指针,当我收到接收操作已完成的通知时,我将获得我之前传递的指针,因此我将知道哪个套接字已启动接收操作,什么是接收缓冲区等。

我的理解正确吗?

0 投票
1 回答
331 浏览

c++ - C++串口库使用Win32同步函数?

我在理解 Klein 的 C++ 串行库中的示例时遇到了一些麻烦。在此页面的大约一半处,有一个名为“使用 Win32 同步对象”的部分,我无法理解。 http://www.codeproject.com/Articles/992/Serial-library-for-C

这是 WaitEvent 从该调用中执行的内容(没有所有检查和内容):

两个问题: 1) 为什么他同时使用串行类中的 WaitEvent 方法,然后立即使用 Windows API 中的 WaitForMultipleObjects?它们似乎都在做同样的事情:等待 COM 端口发生某些事情。2) Stop 事件如何发出信号?WaitForMultipleObjects 是否通过名称或其他方式识别它?

0 投票
1 回答
870 浏览

c++ - WSASocket() 应该与 IOCP 一起使用吗?

我知道建议在创建 IOCP 应用程序时使用WSAAccept(),而不是。accept()但我不确定是否WSASocket()属于 Overlapped I/O 函数,还是只是另一个 Winsock 函数?

0 投票
1 回答
562 浏览

c# - Linux 重叠 I/O TCP 套接字服务器未正确响应 C# ASync 客户端

我正在尝试编写一个简单的功能回声套接字客户端/服务器。我已经设法让一个带有客户端的同步服务器工作,但现在我需要一个异步服务器。

如果我使用 Microsoft 的版本,它运行良好,异步服务器

https://msdn.microsoft.com/en-us/library/fx6588te(v=vs.110).aspx

微软异步客户端

https://msdn.microsoft.com/en-us/library/bew39x2a(v=vs.110).aspx

我现在尝试的是让Microsoft Async ClientLinux C++ Overlapped I/O Server通信:

http://www.tutorialized.com/tutorial/Linux-C-Overlapped-Server-and-Client-Socket-Example/77220

问题从这里开始。连接已建立,我可以向服务器发送消息,服务器响应回显消息(根据调试和终端输出),但 Microsoft ASync 客户端从未在其套接字上获得响应。

是否不可能将异步客户端连接到重叠的 I/O 服务器?我不确定为什么来自服务器的回复永远不会到达客户端。调试 Microsoft ASync 客户端告诉我该Receive函数永远不会通过这行代码:

receiveDone 是一个 ManualResetEvent:

语境:

这里是接收的回调函数,完成后设置receiveDone。bytesRead从不超过 0.:

无论如何,此代码在连接到 ASync 服务器时有效,但不是 Overlapped I/O 服务器,所以实际上我要求在Overlapped I/O 服务器代码中更改什么,以便它发回 ASync 客户端的消息能收到吗?

Hello World如果从 ASync 客户端发送,这是服务器的输出: