while (1)
{
if (cClient >= MAX_CLIENT)
continue; SOCKADDR_IN clientAddr;
int AddrLen;
SOCKET s = accept(serv, (SOCKADDR*)&clientAddr, 
                        &AddrLen);
if (s == INVALID_SOCKET)
{
continue;
}
         ....客户端已经从connect成功返回, 但服务器端始终有 s == INVALID_SOCKET, 这是怎么回事?? 判断accept操作是否成功, 应该是这样写的吧, 另外阻塞模式下accept一段时间后也会返回, 这个超时时间是怎么规定的呢?

解决方案 »

  1.   

    照下面改再试试
    while (1)
    {
    if (cClient >= MAX_CLIENT)
    continue; SOCKADDR_IN clientAddr;
    int AddrLen = sizeof (clientAddr);
                                 ~~~~~~~~~~~~~这儿和你原来不一样
    SOCKET s = accept(serv, (SOCKADDR*)&clientAddr, 
                            &AddrLen);
    if (s == INVALID_SOCKET)
    {
    continue;
    }
      

  2.   

    晕, 我知道怎么回事了, 我的<<windows网络编程>>第二版上少印了一行
    int AddrLen = sizeof(clientAddr); 那地方居然是行空白, 出版社害人啊
    多谢xstring(麻雀)帮忙, 这么晚了还工作啊 :)