完成端口消息的问题,解决完马上给分。
我用的是TCP协议,服务端创建listen socket.
m_socListener = WSASocket(
AF_INET,
SOCK_STREAM,
0,
NULL,
0,
WSA_FLAG_OVERLAPPED
);
我把客户端连接的socket 关联到完成端口之后,另外开启一个线程等待客户端的数据,
while(1)
{
BOOL bIORet = GetQueuedCompletionStatus(
m_hCompletionPort,
&dwIoSize,
(LPDWORD) &lpClientContext,
&lpOverlapped,
INFINITE);
if (!bIORet)
{
clear_err_socket(lpClientContext);
}
}
可是再客户端发送数据之后,GetQueuedCompletionStatus()函数没有唤醒,
或者说GetQueuedCompletionStatus()函数没有任何反映,
就是客户端再关闭时候调用
shutdown(clientSocket);
也不会收到任何消息。
请指教。
可以肯定的是我已经关联到完成端口了,而且客户端显示发送数据成功。
也就是数据已经到达服务器了,
m_socListener = WSASocket(
AF_INET,
SOCK_STREAM,
0,
NULL,
0,
WSA_FLAG_OVERLAPPED
);
我把客户端连接的socket 关联到完成端口之后,另外开启一个线程等待客户端的数据,
while(1)
{
BOOL bIORet = GetQueuedCompletionStatus(
m_hCompletionPort,
&dwIoSize,
(LPDWORD) &lpClientContext,
&lpOverlapped,
INFINITE);
if (!bIORet)
{
clear_err_socket(lpClientContext);
}
}
可是再客户端发送数据之后,GetQueuedCompletionStatus()函数没有唤醒,
或者说GetQueuedCompletionStatus()函数没有任何反映,
就是客户端再关闭时候调用
shutdown(clientSocket);
也不会收到任何消息。
请指教。
可以肯定的是我已经关联到完成端口了,而且客户端显示发送数据成功。
也就是数据已经到达服务器了,
...全文
相关推荐
IOCP完成端口模型
而完成端口模型通过异步传输解决了这一问题,使得应用程序可以在发起I/O操作后立即返回,继续处理其他任务,无需等待I/O操作完成。
解决layer.confirm选择完之后消息框不消失的问题
在本文中,我们将深入探讨如何解决使用layer库时遇到的一个常见问题:layer.confirm选择操作后消息框不自动消失。
IOCP完成端口原理
消息乱序问题:由于IOCP的异步性质,不同请求的完成顺序可能与发起顺序不同,可能导致消息乱序。为了解决这个问题,开发者需要在应用程序层实现适当的逻辑,比如使用序列号跟踪请求,确保正确处理。
变分贝叶斯推理(平均场理论,变分法,贝叶斯推断,EM 算法,KL 散度,变分估计,变分消息传递)
变分消息传递是变分推断中的一种算法,它利用概率图模型的结构来高效地传播和更新消息。这种方法允许将复杂的全局推断问题分解为多个局部推断问题,从而降低计算复杂度。
IOCP完成端口原理[参照].pdf
**消息乱序问题**:在多线程环境下,不同线程从完成端口取出I/O包时可能会导致消息顺序混乱,需要在应用层设计适当的同步机制来保证正确的处理顺序。**四、IOCP的优势**1.


网络编程
