我实现的功能时,当客户端连接到服务器,然后等待接收服务器发送的数据!使用线程接收,代码如下:
DWORD WINAPI AcceptData(LPVOID threadInfo)
{    
  myThreadArgument* AcceptDArgument = (myThreadArgument*)threadInfo;
  mySemaphore* AcceptDcoutSemaphore = AcceptDArgument->getCoutSemaphore();
  myTcpSocket* vmyClient = AcceptDArgument->getClientConnect();
  int recvBytes=0;
  string messageFromServer = "";
  int nRet=-1;
  HWND hWnd=acedGetAcadDwgView()->GetSafeHwnd();
  WSAEVENT revent = ::WSACreateEvent();
  while (nRet!=WAIT_OBJECT_0) {
     nRet = vmyClient->judgeDataRead(revent);   //程序运行到这里就死掉了!!
     if (nRet==WAIT_OBJECT_0) {
        recvBytes = vmyClient->recieveMessage(messageFromServer);//程序运行到这里就死掉了!!       if (messageFromServer!="")
            ......}}
}
int myTcpSocket::judgeDataRead(WSAEVENT event)
{
    ::WSAEventSelect(socketId, event,FD_READ);
    int nRet = ::WaitForSingleObject(event,2000);
    return nRet;
}myTcpSocket:是我写的一个socket类
请问应该怎么改,才能运行啊?谢谢了!!!

解决方案 »

  1.   

    nRet = vmyClient->judgeDataRead(revent);   //程序运行到这里就死掉了!!
    int myTcpSocket::judgeDataRead(WSAEVENT event)
    {
        ::WSAEventSelect(socketId, event,FD_READ);
        int nRet = ::WaitForSingleObject(event,2000);
        return nRet;
    }
    那等待接收服务器发送的数据,使用线程接收,这个功能实现的简单代码应该怎么写?怎么判断服务器有数据发送到客户端??
      

  2.   

    我理解只有主动发,就是主动调用send.还有被动发吗?
    没有见过,
    顶,学习中............