int INetObject::Accept()
{
if( false==m_bListen )
{
if( false==InitSocketTCPS(m_nSocket, m_nIP, m_nPort) )
{
prints("Err,");
return -1;
} m_bListen = true;
} InitAccpetExlpfn(); m_IOCPAcceptData.nSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (INVALID_SOCKET == m_IOCPAcceptData.nSocket)
{
prints("Err,INVALID_SOCKET \n");
return -1;
} m_IOCPAcceptData.nEvent = IOCP_EVENT_ACCEPT;
/*m_lpfnAcceptEx*/ AcceptEx(m_nSocket,
m_IOCPAcceptData.nSocket,
m_IOCPAcceptData.BufferRecv,
/*m_IOCPAcceptData.m_nOutBuffLen - */((sizeof(sockaddr_in) + 16) * 2),
sizeof(sockaddr_in) + 16,
sizeof(sockaddr_in) + 16,
&m_IOCPAcceptData.nRecvBytes,
&m_IOCPAcceptData.OverlappedRecv); return 0;
}
void CNetDriver::AddLocalObject(INetObject* pLocalObject)
{
/*
如果是连接类型的,则先进行初始化,然后则绑定到完成端口
*/
m_LocalObject.push_back( pLocalObject );
if( true==pLocalObject->IsAcceptIdenti() )
{
m_IOCP.AssociateSocket(pLocalObject->m_nSocket, (ULONG_PTR)&pLocalObject->m_IOCPAcceptData);
MTVERIFY(-1!=nResult);
}
}
完成端口API没有问题,connect进来的都能接到事件,但是GetQueuedCompletionStatus这条语句根本就没有返回。。不解了,,求教。。
解决方案 »
- 求解:CDockablePane + CFormView + 可调整位置的控件?
- 有关CreateDispatch的问题
- 能给详细解释一下"^="的意义么?
- 请问如何截获CStatic控件的鼠标双击消息
- c++ primer中的一段话的错误和引用的危险
- 求助大家一个简单问题
- 如何用VC6实现从FTP服务器下载超过4G的大文件的断点续传功能
- 我有没有必要继续学习VC?
- 用了Application->ProcessMessages()后,程序结束时,为何一直出错?
- MsFlexGrid VC
- 下面代码中的g_hWnd=m_hWnd 是什么意思,另外HINSTANCE 和HWND 有什么区别
- 在对话框中添加了一个richedit控件,为什么对话框就不显示了
可能没表达清楚:我是说无法监听到Accept,不关WSARecv的事吧
我是笨蛋谢谢大家,揭贴了。