SOCKADDR_IN cliadd;
         int n;
CString temp;
n=sizeof(SOCKADDR_IN);
Accept(m_sockHandle,(SOCKADDR*)&cliadd,&n);一台机器这样连接没有问题
但是当第二台机器连接上的时候就出现了错误
请教  这是啥原因啊

解决方案 »

  1.   

    当然了,你只调用了一次Accept阿, 每个连接都要Accept阿,
      

  2.   

    那是在OnAccept函数里用循环吗
    监听套接字的Listen函数里不是可以指定同时接受的客户数吗
      

  3.   

    yes:int listen (
      SOCKET s,    
      int backlog  
    );backlog is the max number .
      

  4.   

    那在每次Accept之前都要把原来的m_sockHandle保存起来再
    Accept(m_sockHandle)是吧?要不要先m_sockHandle.Detach()
    再Accept(m_sockHandle);啊?
      

  5.   

    在老兄你的提示下 我把程序改了一下:
    CSockHandle* pHandle=new CSockHandle;
    Accept(*pHandle,(SOCKADDR*)&cliadd,&n);
    这样的确是可以接收多个连接了 但是这样又有一个问题了
    我在OnAccept函数里动态创建的套接字在OnAccept结束之后(其他地方)还能用吗?
    它的内存在什么时后被释放啊?