[quote=引用 16 楼 Linux7985 的回复:] [quote=引用 15 楼 changjiangzhibin 的回复:] 习惯是 byte[1024] 切片处理
[quote=引用 15 楼 changjiangzhibin 的回复:] 习惯是 byte[1024] 切片处理
楼主所说的"包"的概念,并不是tcp/ip协议中的数据包,而是发送缓冲区和接收缓冲区大小 tcp/ip数据包是定长的,无论缓冲区大还是小,都会被拆包成固定大小并追加报文信息,再发送 所以不存在10MB的数据一次性发送到网络的情况,不管缓冲区大还是小,它都是依次发送出去的 当然,经过路由的时候,可能会经多路由转发 这个跟应用层没有任何关系啊
越大越快的说法是不靠谱的 凭什么说越大就越快?
1.如果仅仅是tcp/ip丢包的问题,tcp有重发机制,是不用应用层处理的 但是如果涉及到连接异常断开,错误重连,断点续传的问题,包过大的话,需要重传的内容也过多了 2.最终数据会通过网卡传输,而网卡中的缓存是有限的,内部会有机制从内存中传入网卡中再发送,包大到一定程度,CPU处理时间比起网络传输时间就可以忽略不计了
首先这个socket.Receive的大小与网络层没有任何关系,不需要考虑分包的事情,与丢包更没有关系。 其次确实是越大越快,不过这个快成指数级下降的,达到一定程度基本就没什么意义了,而且这个阀值一般网络环境都不大。 为什么数据包要小,因为怕爆内存。
首先这个socket.Receive的大小与网络层没有任何关系,不需要考虑分包的事情,与丢包更没有关系。
取决于通讯协议。为什么通讯协议要限制包的大小?因为过大的包丢失的概率会更大。 这是起码的常识问题。
110,538
社区成员
642,577
社区内容
加载中
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧