当前位置: 技术问答>java相关
Java里基于TCP/IP的Socket通信中一帧数据最好是多大(内详)
来源: 互联网 发布时间:2015-10-28
本文导语: 客户端与服务器端不在一个局域网内,可能相隔很远,那么一帧数据最好为多大时即能保证数据正确传输到,又能提高传输效率,因为包太小,容易造成延迟,包太大容易传输失败,请各位有经验的高手指教…… ...
客户端与服务器端不在一个局域网内,可能相隔很远,那么一帧数据最好为多大时即能保证数据正确传输到,又能提高传输效率,因为包太小,容易造成延迟,包太大容易传输失败,请各位有经验的高手指教……
|
我个人认为,socket基于tcp/ip,所以有tcpip的特性,可以自行切割,分包,组合
但我没有试过
但我没有试过
|
这个好像和 java 没什么关系,就是TCP/IP协议的问题。
解释不清楚,查看TCP/IP Illustrated Vol 1 相关章节吧
解释不清楚,查看TCP/IP Illustrated Vol 1 相关章节吧
|
对于一个java程序员是可以不管这些底层工作的,
对于其他语言我不清楚,
关注中!
对于其他语言我不清楚,
关注中!
|
你可以尝试发送多次。比较每次收到的包,然后效验。
|
包的大小不是问题,主要看你设置的socket的传送超时是多少。假如不设置超时,说包大了就传送失败,那么这个socket连接就断了,你再通信也是不可能了。只要连接可以保证,怎么分大小,没有什么关系。(以上对于tcp,不是udp)
|
靠分包大小来提高传输的可靠性不太可能,
但合适的大小有助于提高socket系统缓存的流转速度,
一般设为操作系统内存分页大小
提高传输可靠性最有效当然是提高网络可靠性,从软件的方法是在tcp基础上自己再控制握手
但合适的大小有助于提高socket系统缓存的流转速度,
一般设为操作系统内存分页大小
提高传输可靠性最有效当然是提高网络可靠性,从软件的方法是在tcp基础上自己再控制握手
|
不知道我说得对不对,但是我们课上是这么说的:
TCP/IP包里的“真正”的数据60~1493bytes,如果少于60bytes就要用padding来补足60
但是这是由协议本身决定的,应该你不可以也不可能改变吧
TCP/IP包里的“真正”的数据60~1493bytes,如果少于60bytes就要用padding来补足60
但是这是由协议本身决定的,应该你不可以也不可能改变吧
|
哈哈,tcp是流数据,你的包大了,他会自动分包,所有不用关心这个问题。
|
关注!
|
wo我想搂住所说的包是指send和receive的buffer大小,而不是指tcp/ip这个层次上的包的概念