是否设置了Listen的参数>1。
Listen( 5 );

解决方案 »

  1.   

    对呀,参数默认值就是5。
    下面是我的代码
    服务器
    suc=socket.Create(8000,SOCK_STREAM,LocalIP);
    suc=socket.Listen();
    //accept
    CSocket msgsock[6];
    int ret;
    BOOL End=false;
    while(!End)
    {
    if(socket.Accept(msgsock)==0)
    {
    err=GetLastError();
    socket.Close();
    return;
    }
    ...
    ret=msgsock.Receive(buffer,1024);
    ...
    msgsock.Close();
    }
    socket.Close();
    客户端
    suc=socket.Create(8001,SOCK_STREAM,LocalIP);
    if(suc==0)
    {
    err=GetLastError();
    return;
    }
    //connect
    suc=socket.Connect(ip,8000);
    if(suc==0)
    {
    err=GetLastError();
    return;
    } //send
    int ret;
    ret=socket.Send(buffer,sizeof(buffer));
    if(ret==SOCKET_ERROR)
    {
    socket.Close();
    return;
    }
    //closesocket
    closesocket(Socket);
      

  2.   

    1。第一次connect成功没有关闭Scoket.用完要关闭!
    2。可以在CSocket中将IP设为可共用,也可解决问题。
      

  3.   

    错误所在if(socket.Accept(msgsock)==0)
    应该为if(socket.Accept(msgsock[no])==0)否则你永远使用msgsock[0] 来应答
      

  4.   

    你不应将
            ...
            ret=msgsock.Receive(buffer,1024);
            ...
            msgsock.Close();
    放在while中,如果你这其中的代码没有完成,就不会回去再执行
    socket.Accept了!!
      

  5.   

    1。我得socket已经关闭了呀
    2。请问怎么在CSocket中将IP设为可共用
      

  6.   

    客户端的程序关闭socket改成socket.Close()可是问题还是一样
      

  7.   

    to:guostong(笨驴)
      我在第二次用msgsock之前已经把msgsock.Close()难道不行么?
    to:SeaBirds(SeaBird)
      我跟踪
           ...
            ret=msgsock.Receive(buffer,1024);
            ...
            msgsock.Close();
      之间的代码都已经完成了呀。如果不放在循环中我怎么知道为是否已经连接上了呀。
      
      

  8.   

    liuchunpeng(悟衍) 没错1。第一次connect成功没有关闭Scoket.用完要关闭!
    客户端
        suc=socket.Create(8001,SOCK_STREAM,LocalIP);
        if(suc==0)
        {
            err=GetLastError();
            return;
        }
        //connect
        suc=socket.Connect(ip,8000);
        if(suc==0)
        {
            err=GetLastError();
            socket.close();
            return;
        }
      

  9.   

    可是我在最后已经加上socket.close()问题还是有呀。
    还请大家帮帮忙
      

  10.   

    错误在:
    suc=socket.Create(8001,SOCK_STREAM,LocalIP);
     中的8001,将他改为:   
    suc=socket.Create(0,SOCK_STREAM,LocalIP);就OK了!!替代方法:
     每一次使用后先CLOSE他,然后在CREATE、CONNECT一次,但是这样做效率底!!!
      

  11.   

    to:Sunny_lin(大和尚) 
      您的第一种方法解决了我的问题。
    可是我觉得我用的就是您说的第二种方法呀,为什么不行哪