7得票3回答
臭名昭著的“ERROR_NETNAME_DELETED”错误可以被视为错误吗?

我正在使用完成端口编写Windows NT中的tcp服务器,以利用异步I/O。我有一个TcpSocket类、一个TcpServer类和一些虚拟函数回调,在I/O操作完成时调用,例如当读取完成时调用onRead()。我还有一个onOpen()用于在连接建立时调用,一个onEof()用于在连接关闭...

17得票4回答
IOCP线程 - 澄清?

阅读了这篇文章后,它声明: 设备完成任务(IO操作)后,通过中断通知CPU。 ... ... ... 然而,“完成”状态仅存在于操作系统级别;进程具有自己的内存空间,必须得到通知。 ... ... ... 由于库/BCL正在使用标准的P/Invo...

23得票2回答
我该如何找到一个 .net 类是否使用了 IOCP?

更新 我问错了问题,根据回答和评论中的信息重新表述: 是否有关于.NET的异步操作真正是异步的好资料,因此要么是IOCP,要么是异步(重叠)? 有没有快速的方法可以找出是否有几个类这样做呢? 不要盲目信任框架开发人员的示例 创建FileStream的自然起点是静态的File.Open()方法...

47得票7回答
Linux和I/O完成端口?

使用Winsock,您可以将套接字或单独的I/O操作配置为“重叠”。这意味着执行I/O的调用会立即返回,而实际操作则由单独的工作线程异步完成。 Winsock还提供了“完成端口”。据我了解,完成端口充当句柄(套接字)的复用器。如果一个句柄没有处于I/O操作中,也就是说,如果它的所有I/O操作...

16得票7回答
使用IOCP与UDP?

我对于涉及TCP协议的输入/输出完成端口非常熟悉。 但是,如果我正在编写一款FPS游戏或任何需要低延迟的游戏,即使在牺牲一些空间数据的情况下也希望立即响应玩家以提供最佳游戏体验。很明显,我应该使用UDP,除了频繁发送坐标更新外,还应该实现某种半可靠协议(据我所知,TCP会在UDP中引起数据包...

8得票8回答
Delphi是否有基于I/O完成端口的组件?

我知道Indy, ICS, Synapse和Clever InetSuite,但它们都不支持IOCP。还有其他的吗? 编辑: 我找到了iocpclasses,它是用Delphi5编写的。总比没有好。

10得票4回答
从I/O完成端口中删除句柄以及有关IOCP的其他问题

CreateIoCompletionPort函数可以创建一个新的I/O完成端口,并将文件句柄注册到现有的I/O完成端口中。 然后,我可以使用任何函数,例如在套接字上使用recv或在带有OVERLAPPED结构的文件上使用ReadFile来启动异步操作。 我必须检查函数调用是否同步返回,即使...

7得票3回答
TCP/IP IOCP接收数据有时会损坏 - 在Windows上使用Visual C++

我正在编写一个简单的测试 ICOP 客户端和服务端,以确保我正确地使用 API,并且客户端发送的数据被服务器正确接收。我已经包含了这个问题的所有代码。 在这里,我遇到了一些问题,就是接收缓冲区内的数据有时似乎会损坏(损坏指缓冲区内的数据块有时可能是无序或缺失的)。明确一点,这是在单个接收缓冲...

9得票1回答
从IOCP线程调用WSAGetLastError()返回不正确的结果。

我调用了WSARecv(),它返回了WSA_IO_PENDING。然后我从另一端发送了一个RST数据包。存在于另一个线程中的GetQueuedCompletionStatus()函数如预期地返回了FALSE,但是当我调用WSAGetLastError()时,返回的错误码是64而不是WSAECO...

13得票4回答
可扩展的C++服务器框架

我想用C++编写一个服务器应用程序,能同时处理数万个客户端连接,且能在Windows和Linux操作系统下运行。我已经搜索了很多框架和库,发现Boost Asio是一个非常成熟和广泛使用的选择。但是,由于Boost库有数百万个模板,我很难理解strand/线程池的使用。我的背景主要是C语言,不...