做一个测试软件模拟多个客户端连接到服务器端,客户端采用多线程处理方式。
实现方式 :在线程中定义TClientSocket * FClientSocket;
                    TWinSocketStream* FSocketStream;
                    unsigned char FAcceptBuff[500];
                    unsigned char FSendBuff[200];
线程构造函数中初始化上面的对象
{
  FClientSocket = new TClientSocket(NULL);  //
  FSocketStream = new TWinSocketStream(FClientSocket,1000);
  memset(FAcceptBuff,00,500);
  memset(FSendBuff,00,200);
  FClientSocket … 设置阻赛,端口,主IP,并打开连接
 
}

在OnExecute 中
  while ((!Terminated)&& FClientSocket->Active)
    {
      Sleep(30);
      if (FSocketStream->WaitForData(100))
      {
//—————问题出现在下面
/* 如果创建一个线程正常,如果创建多个线程则出现
  … read error 64,指定的网络名不再可用。 …
  查找相关内容是说相关连接已经关闭。
  各位大侠帮忙解释一下,什么原因,如何造成的,如何解决呢??
*/         

          RecvLen = FSocketStream->Read(FAcceptBuff,500);

//—————-
        if ( RecvLen > 0)
        {
            FAcceptDataCount++; //计数
            ReadSocket(FAcceptBuff,RecvLen); //接收缓冲区处理缓冲区数据

              FMessage.LParamHi = FAcceptDataCount;  //消息通知主线程
            FMessage.LParamLo = FSendDataCount;
            PostMessage(FMainHandle,CCMESSAGE,(unsigned int)FThreadID,FMessage.LParam);
        }
      }
    }

/* 如果创建一个线程正常,如果创建多个线程则出现
  … read error 64,指定的网络名不再可用。 …
  查找相关内容是说相关连接已经关闭。
  各位大侠帮忙解释一下,什么原因,如何造成的,如何解决呢??
*/