关于socket的问题:请问一段数据,用Send()一次传送与分N次传送在效率上的区别?

lcclcc 2005-06-27 12:09:58
socket s;
char* buf=new char[100000];

1.循环send(s,buf[nPosition],100,0),直至将buf中的所有数据即100000字节全部送出;

2.send(s,buf,100000,0)

请问:1和2在网络传输效率上有无区别,区别在哪里?
...全文
201 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
kugou123 2005-07-03
  • 打赏
  • 举报
回复
第一种虽然在理论上效率不如第二种,但是实际中建议使用第一种方法,因为要从稳定性方面考虑。
ChineseAlexander 2005-07-02
  • 打赏
  • 举报
回复
没看完就发了,不好意思
ChineseAlexander 2005-07-02
  • 打赏
  • 举报
回复
不一定,windows本身就是多进程工作的,就算没有自动分包,你一次传送,一定就能保证一直占用CPU的使用权吗?有机会倒可以编几个小程序试验一下
lcclcc 2005-07-01
  • 打赏
  • 举报
回复
未谈出个所以然来,一叹!
AntonlioX 2005-06-28
  • 打赏
  • 举报
回复
关注
Tranquillo 2005-06-28
  • 打赏
  • 举报
回复
网络效率应该是指网络接口将数据发送出去的效率吧,,一般情况下第2种效率要高,因为一般网络层的MTU要远大于100,第一种方法让网络接口将一次能完成的事情分多次来完成,第2种情况网络会自动将数据分包,每个包大小恰为MTU的大小,因而能最好的利用网络带宽

lcclcc 2005-06-28
  • 打赏
  • 举报
回复
感觉楼上各位的回答,均未触及问题的实质,这样阐述问题或许要清晰一些:
socket s;
char* buf=new char[100000];

1.循环send(s,buf[nPosition],100,0),直至将buf中的所有数据即100000字节全部送出;
2.send(s,buf,100000,0);


请问:1和2分别被操作系统用分几次(或几个包)在网络上传输完成,此两种方式在网络传输效率有的区别在哪里?注意,此处不用论及多次send()调用的cpu开销,特问网络传输效率?
Tranquillo 2005-06-27
  • 打赏
  • 举报
回复
第2种方法当然效率高一些,因为第一种方法要多次调用函数,cpu开销大些,问题是第2种方法不能保证把这么大的数据全部发送完
Zhymax 2005-06-27
  • 打赏
  • 举报
回复
其实如果超过当前网络的MTU(Maximum Transmission Unit 最大传输单位),数据还是会被自动分包传输的;
例如:ADSL MTU值是1492,windows tcp/ip的MTU是1500

lcclcc 2005-06-27
  • 打赏
  • 举报
回复
Tranquillo(影子) ( ) 信誉:99 2005-06-27 12:28:00 得分: 0


第2种方法当然效率高一些,因为第一种方法要多次调用函数,cpu开销大些,问题是第2种方法不能保证把这么大的数据全部发送完


你可能未理解我的题义,我是问”1和2在网络传输效率上有无区别“。
lcclcc 2005-06-27
  • 打赏
  • 举报
回复
回复人: Zhymax(蓝点) ( ) 信誉:100 2005-06-27 12:23:00 得分: 0


其实如果超过当前网络的MTU(Maximum Transmission Unit 最大传输单位),数据还是会被自动分包传输的;
例如:ADSL MTU值是1492,windows tcp/ip的MTU是1500



100000字节的数据,当然会被分包传输,那么100字节的数据,send()后,操作系统在什么时间才真正将此数据传向网络另一端?

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧