winsock是用socket api。
你用的是mfc里封装好的CSocket类。两者不可混为一谈。sockSrvr.Accept(sockSrvr)这句话不对。
接受一个连接时,需要建立一个新的socket来接受,而不可用其本身(监听Socket)来接受。
对于CSocket类,一样。

解决方案 »

  1.   

    sockSrvr是用来监听连接的,sockRecv是具体的某一个连接.
    如果象你写的那样,那就只能有一个连接了.
      

  2.   

    我觉得用socket api写更舒服
      

  3.   

    楼上两位说得对。
        CSocket sockSrvr;
        sockSrvr.Create(800);
        sockSrvr.Listen();  
    //监听800号端口
        CSocket sockRecv;
        sockSrvr.Accept(sockRecv); 
    //用一个新的Socket来接受连接请求,而sockSrvr继续在800端口监听
    //如果直接用sockSrvr.Accept(sockSrvr);那么sockSrvr就与请求连接的对方连接上了,而不能再监听新的连接请求了。
      

  4.   

    accept(CSocket rev);中rev必须没有调用过create()
    在你的程序中sockSrvr已经调用过create()了,所以不行