毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> 开发语言 >> 正文

Socket通讯接收报错10054

更新时间:2013-7-11:  来源:毕业论文

Socket通讯接收报错10054

缘由:因考虑ACE的可移植性平台,所以使用ACE来进行通讯。目前客户端与服务器端粘包时,客户端总是接收报错10054,经过csdn,微软自提供解决方案,在socket连接前,贴上以下代码即可规避10054。

----------------------------------
          
C/C++ code?DWORD dwBytesReturned=0;         BOOL bNewBehavior=FALSE;         DWORD status;         status = WSAIoctl(PrimaryUDP, SIO_UDP_CONNRESET,             &bNewBehavior, sizeof(bNewBehavior),             NULL, 0, &dwBytesReturned,             NULL, NULL);         if (SOCKET_ERROR == status)         {             DWORD dwErr = WSAGetLastError();             if (WSAEWOULDBLOCK == dwErr)             {                 // nothing to do                 return(FALSE);             }             else            {                 printf("WSAIoctl(SIO_UDP_CONNRESET) Error: %d\\n", dwErr);                 return(FALSE);             }         }

----------------------------------

问题:因为本人是ACE新手,所以对于WSAIoctl函数的第1个参数不知如何填写,因为不知道如何找出ACE_SOCK_Stream内部的socket。原大虾们帮忙看看。
附使用代码:
----------------------------------
      
C/C++ code?ACE_SOCK_Stream *pSock = new ACE_SOCK_Stream();       DWORD dwBytesReturned=0;     BOOL bNewBehavior=FALSE;     DWORD status;     status = WSAIoctl( pSock->get_handle()         , SIO_UDP_CONNRESET,         &bNewBehavior, sizeof(bNewBehavior),         NULL, 0, &dwBytesReturned,         NULL, NULL);     if (SOCKET_ERROR == status)     {         DWORD dwErr = WSAGetLastError();         if (WSAEWOULDBLOCK == dwErr)         {             // nothing to do             return NULL;         }         else        {             printf("WSAIoctl(SIO_UDP_CONNRESET) Error: %d\\n", dwErr);             return NULL;         }     }       if(!ConnSrv(pSock,_ipAddr,_port))     {         delete pSock;         pSock=NULL;           _validateSign = false;           delete[] recvbuf;         recvbuf = NULL;           LC_PubFunValue::setSysState(4, "1");         _cErrorCode = "APP0027";           response->setRetCode("APP0027");         return response;     }
10054应该是阻塞吧,之后通过select中的参数可以判断什么时候可读

 Connection   reset   by   peer.    
   
  A   existing   connection   was   forcibly   closed   by   the   remote   host.   This   normally   results   if   the   peer   application   on   the   remote   host   is   suddenly   stopped,   the   host   is   rebooted,   or   the   remote   host   used   a   "hard   close"   (see   setsockopt   for   more   information   on   the   SO_LINGER   option   on   the   remote   socket.)

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。