VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 630|回复: 0

[求助] VC AcceptEx 报10038

[复制链接]
50_avatar_middle
在线会员 发表于 2018-8-24 14:34:25 | 显示全部楼层 |阅读模式
3驿站币
  1. BOOL CIOCPTCP::DoAccept(LPVOID pv)
  2. {
  3.         CIOCPTCP* pServer = (CIOCPTCP*)pv;
  4.         int iBufLen = 0;
  5.         DWORD dwNo = 0;
  6.         BOOL bDontLinger = FALSE;
  7.         int result=0;
  8.         SOCKET cClientSKT=INVALID_SOCKET;
  9.         WSAOVERLAPPED* AcceptOverlapped;
  10.         WinSockInit();
  11.         cClientSKT=WSASocket(AF_INET,SOCK_STREAM,IPPROTO_TCP,NULL,0,WSA_FLAG_OVERLAPPED);
  12.         if (INVALID_SOCKET == cClientSKT)
  13.         {
  14.         }
  15.         else
  16.         {
  17.                 CTBufferObj* cbuffobj=GetCTBufferObj();
  18.                 if (cbuffobj==NULL)
  19.                 {
  20.                         AfxMessageBox(_T("AcceptEx内容分配失败"));
  21.                 }
  22.                 //memset(&cbuffobj->ov, 0, sizeof (cbuffobj->ov));
  23.                 //memset(&cbuffobj->buff, 0, sizeof (cbuffobj->buff));
  24.                 //memset(&cbuffobj,0,sizeof(cbuffobj));
  25.                 cbuffobj->m_client=cClientSKT;
  26.                 //CreateIoCompletionPort((HANDLE)cbuffobj->m_client,m_hCompletionPort,(ULONG_PTR)cbuffobj,0);
  27.                 DWORD dwBytesRecv=0;
  28.                 AcceptOverlapped=new OVERLAPPED();
  29.                 //ZeroMemory(&AcceptOverlapped, sizeof(WSAOVERLAPPED)); 
  30.                 char datas[1024]={0};
  31.                 if(!pServer->m_pfnAcceptEx(m_ListenSocket,cClientSKT,datas,0,
  32.                         sizeof(sockaddr_in)+16,sizeof(sockaddr_in)+16,&dwBytesRecv,AcceptOverlapped))
  33.                 {
  34.                         result = ::WSAGetLastError();
  35.                         if(result!=WSA_IO_PENDING)
  36.                         {//失败了
  37.                                 return FALSE;
  38.                         }
  39.                 }
  40.                 return FALSE;
  41.         }
  42.         return TRUE;
  43. }
复制代码


主线和中如果调用DoAccept,acceptEX返回997,正常的结算,如果放到子线程里面,如果不调用
WSAStartup(MAKEWORD(2, 2), &data),
连WSASocket(AF_INET,SOCK_STREAM,IPPROTO_TCP,NULL,0,WSA_FLAG_OVERLAPPED);都无法成功创建 ,创建成功后,acceptex就返回10038,一直找不到原因





上一篇:VC AcceptEx报100
下一篇:大量数据运算
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-3-26 13:43

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表