c++ - 在调试器中时 Winsock2 数据丢失

标签 c++ winsock winsock2 overlapped-io

我将 Winsock2 与重叠 I/O 结合使用。这意味着我使用 WSAOVERLAPPED 结构调用 WSARecv,稍后我使用 WSAWaitForMultipleEvents 等待数据。

我做了一个奇怪的观察,当我用调试器停止它时,我似乎丢失了发送到我的应用程序的所有数据。我认为这些数据会堆积在操作系统的某个地方,然后在下一次调用 WSARecv 时传送。

我的假设是错误的吗?

最佳答案

UDP 还是 TCP?

我假设您在每次调用时使用单独的 OVERLAPPED 结构,并在每个结构中使用单独的事件。

请记住,将重叠的 I/O 与事件一起使用并不是特别可扩展的,简单地将套接字与 I/O 完成端口相关联并完全跳过整个事件要容易得多。

关于c++ - 在调试器中时 Winsock2 数据丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6307695/

相关文章:

c++ - 在 C/C++ 中取消初始化变量

C++11 异常的析构函数现在允许抛出吗?

c++ winsock recv在接收到0数据时终止线程而不是返回错误代码

tcp - Powerbuilder Winsock 库实现

c++ - 这在 c int a :16;? 中意味着什么

c++ - 什么是 undefined reference /未解析的外部符号错误以及如何修复它?

debugging - Winsock 的 connect() 永久返回 WSAETIMEDOUT,但 PuTTY 连接在同一个端口

c++ - GetQueuedCompletionStatus 在 UDP 套接字上无限期阻塞

c++ - UDP 发送()到 Winsock 下的本地主机丢弃数据包?

c++ - 套接字c++ : recv function returns -1