c# socket 数据包大小设置问题

kekezhu0000 2013-08-25 05:53:41
本人socket新手,对数据包的大小设置没有概念,有没有合适的大小范围,可以更好的避免传输速度以及粘包丢包问题!
开始定义的为 Byte[] _cmdBuff = new Byte[20]; 我从cline发送了一30.8k的文件,效率低的要命
重新设定大小为Byte[] _cmdBuff = new Byte[60000]; 瞬间完事。。。。。。。。。。。。。。
抛开程序健壮性,数据包的大小定义有没有技巧!!!
请大师们指点!
...全文
666 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jeece_JX 2015-04-01
  • 打赏
  • 举报
回复
感觉缓冲区大小最好在1500字节以内,不然在网络不稳定的情况,传输效率低
kekezhu0000 2013-08-26
  • 打赏
  • 举报
回复
多谢大师们的指点!!看来小弟概念理解上有问题
showjim 2013-08-25
  • 打赏
  • 举报
回复
在内存满足的情况下,一般根据需求来决定buffer的大小。
全栈极简 2013-08-25
  • 打赏
  • 举报
回复
打个不恰当的例子,new Byte[6000],里面的数组长度的大小就像一个马路一样,越大表示马路越宽,同时通过的车辆就越多。至于这个值究竟多大最适合,跟网络情况有关,并没有一个固定的值。
threenewbee 2013-08-25
  • 打赏
  • 举报
回复
用tcp协议,是不会“丢包”的。
  • 打赏
  • 举报
回复
6k --> 60k
  • 打赏
  • 举报
回复
你才设置了不到6k大小的buffer,“那个”很小哦。 应用程序层的buffer,跟最底层的什么buffer是两回事。不要照着底层的资料来设置业务应用层代码。请你从测试出发进行设计,不要从理论出发。
  • 打赏
  • 举报
回复
什么话? 粘包是tcp的特点,因此tcp可以“慢启动”而避免像udp那样霸道地阻塞网络,你反而说成是问题? 至于丢包,我告诉你,如果你说tcp丢包,那么请检查你自己的代码。 对于服务器,我的buffer以前设置为400k,现在设置为2M。这些对程序正确性没有什么影响。实际上它只要与网络带宽适配的话,那么buffer越大效率越高。

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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