VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 304|回复: 0

[求助] VC AcceptEx 报10038

[复制链接]
50_avatar_middle
在线会员 wxliang 发表于 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

本版积分规则

关闭

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

QQ
QQ在线咨询
联系电话
13591366679
手机扫一扫 关注本站精彩内容
wxqrcode

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

GMT+8, 2018-9-20 19:36

Powered by Discuz! X3.4

© 2009-2018 cctry.com

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