IOCP的错误:重叠 I/O 操作在进行中。要不要关闭TCP连接?

时间:2022-06-24 10:17:29
我想是我理解这些概念不够清除了。IOCP中出现997,重叠 I/O 操作在进行中的错误时,到底要不要关闭掉TCP,释放PER_HANDLE_DATA和completion key?
哪位兄弟姐妹知道的告诉我一下。我的IOCP目前没其他问题,就这个拿不定主意。

9 个解决方案

#1


你这是怎么出现的,难道你的IO数据重复使用了?

#2


我想一般不同时使用同一个IO就没这样的问题的吧

#3


投递一个请求,没有返回前,不要再次投递

#4


各位,就是在GET函数返回了997,重叠 I/O 操作在进行中 的错误呀。你们没回答我的问题。我的IOCP现在工作正常,但经常出现997,连被关闭了。不知道怎么出现997的。

#5


//
// MessageId: ERROR_IO_PENDING
//
// MessageText:
//
// Overlapped I/O operation is in progress.
//
#define ERROR_IO_PENDING                 997L    // dderror

这个很正常的情况呀,WSARecv一般都是不成功,异步的代价就是会出这种错误啊。
这个都不清楚,回去好好复习一下重叠IO吧。

#6


这样应该不算是错误,表示操作正在进行中,可能之后会完成。通过WSAGetOverlappedResult查看状态

#7


ok,我试试WSAGetOverlappedResult。多谢!

#8


不过我还是有疑问,既然投递的操作还没完成,为何GET函数会返回这个错误信息给应用程序呢

#9


引用 5 楼 woshinia 的回复:
//
// MessageId: ERROR_IO_PENDING
//
// MessageText:
//
// Overlapped I/O operation is in progress.
//
#define ERROR_IO_PENDING                 997L    // dderror

这个很正常的情况呀,WSARecv一般都是不成功,异步的代价就是会出这种错误啊。
这个都不清楚,回去好好复习一下重叠IO吧。


我说的是GET函数返回的,不是WSARECV函数返回的。

#1


你这是怎么出现的,难道你的IO数据重复使用了?

#2


我想一般不同时使用同一个IO就没这样的问题的吧

#3


投递一个请求,没有返回前,不要再次投递

#4


各位,就是在GET函数返回了997,重叠 I/O 操作在进行中 的错误呀。你们没回答我的问题。我的IOCP现在工作正常,但经常出现997,连被关闭了。不知道怎么出现997的。

#5


//
// MessageId: ERROR_IO_PENDING
//
// MessageText:
//
// Overlapped I/O operation is in progress.
//
#define ERROR_IO_PENDING                 997L    // dderror

这个很正常的情况呀,WSARecv一般都是不成功,异步的代价就是会出这种错误啊。
这个都不清楚,回去好好复习一下重叠IO吧。

#6


这样应该不算是错误,表示操作正在进行中,可能之后会完成。通过WSAGetOverlappedResult查看状态

#7


ok,我试试WSAGetOverlappedResult。多谢!

#8


不过我还是有疑问,既然投递的操作还没完成,为何GET函数会返回这个错误信息给应用程序呢

#9


引用 5 楼 woshinia 的回复:
//
// MessageId: ERROR_IO_PENDING
//
// MessageText:
//
// Overlapped I/O operation is in progress.
//
#define ERROR_IO_PENDING                 997L    // dderror

这个很正常的情况呀,WSARecv一般都是不成功,异步的代价就是会出这种错误啊。
这个都不清楚,回去好好复习一下重叠IO吧。


我说的是GET函数返回的,不是WSARECV函数返回的。