如题!!

解决方案 »

  1.   

    当然不是啦,Send返回的是成功发送了的字节数,不一定就是nBufLen, 有可能会比nBufLen小,最大
    也只可能等于nBufLen .
    如,你发送1M数据,调用Send可能返回只几百K,你需要再次调用Send发送剩下的数据。
    一般都是用while循环发送数据。
    char data[];
    ...
    int nSended = 0;
    int nTotalSended = 0;
    int nBufLen = sizeof(data);
    while (nTotalSended < nBufLen)
    {
       nSended = pSocket->Send(data[nTotalSended] , nBufLen - nTotalSended);
       nTotalSended += nSended;
    }
      

  2.   

    楼上的说得不错呀,支持呀不过还是有一个问题,如果一直发不出去就char data[];
    ...
    int nSended = 0;
    int nTotalSended = 0;
    int nBufLen = sizeof(data);
    while (nTotalSended < nBufLen)
    {
       nSended = pSocket->Send(data[nTotalSended] , nBufLen - nTotalSended);
       if (nSended >= 0)  
            nTotalSended += nSended;
       else
            break;
    }
      

  3.   

    请大家注意了,是CSocket类,再看一下这个类的Send函数是怎么写的!!