就是发送一个消息 很初级 但是有个小地方不理解
代码片段:
for(i = 0;i<dwCount;i++)//dwCount == 20
{
 ret = send(sClient,szMessage,strlen(szMessage),0);
 if(ret == 0) break; //这个地方是什么意思
 else if(ret == SOCKET_ERROR)
 {...}
}
closesocket(sClient);
WSACleanup();
return 0;
上面为什么检测ret==0呢? 我的问题是这样的 for循环20次 这20次是发20个szMessage还是就发1个 只要在20次内发完一次szMessage? 如果是20次内目的是发送一个szMessage 那么是不是把send函数调用那行代码应该改成 send(sClinet,szMessage[index],strlen(szMessage)-index);其中index += ret; 这样才对嘛 所以我看不懂那行加粗的代码高手帮我看看 知道问题很初级 不要笑话 嘿嘿

解决方案 »

  1.   

    照你上面的代码,20次是发送20次的szMessage。
    ret是send发送后返回的实际发送了多少字节。-1表示失败,0标识发送完了接下去就结束了,所以break出循环。
    想轮询发送的话,差不多就你那意思
      

  2.   

    多谢LS回答 send全部发送完是返回0?还是返回具体的字节数? send如果发送了部分 我知道是返回实际发送的字节数书上那个例程还是看不懂 似乎不是想发送20次 不然干嘛返回0就跳出循环 又不想是想在20次发送内发送一szMessage就跳出 不然应该有个index来告诉send:“不要从最前头开始发了 应该从上次发送字节的下个字节发送 而且发送数目变化了” 才对啊
      

  3.   

    send返回0表示socket不可用~就是断开了
    -1是发生错误
    正数是成功 代表发送数目
      

  4.   

    send返回0表示socket不可用~就是断开了 
    -1是发生错误 
    正数是成功 代表发送数目套接字不可用后需要重新建立连接,才能发送,所以要跳出
      

  5.   

    send返回0表示socket不可用~就是断开了 
    -1是发生错误 
    正数是成功 代表发送数目套接字不可用后需要重新建立连接,才能发送,所以要跳出
      

  6.   

    send返回0表示socket不可用~就是断开了 
    -1是发生错误 
    正数是成功 代表发送数目套接字不可用后需要重新建立连接,才能发送,所以要跳出
      

  7.   

    send返回0表示socket不可用~就是断开了 
    -1是发生错误 
    正数是成功 代表发送数目 套接字不可用后需要重新建立连接,才能发送,所以要跳出-----------------------
    就是这样的。