java.net包里datagrampacket的buffer只有8192字节,如何传输更大数据? 网上查了下,说把数据分成更小的包,然后一点点传过去。但是我这样做了后,只能接收到前面8192字节的数据,不知道问题出在哪里?难道说那个buffer不会清空的?刚接触网络这块,不是很懂,请大虾赐教 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 答:DatagramSocket的默认发送缓冲区大小是8192字节。当ds.send(UDP包)时,若UDP包长度大于默认大小,则:可能发送出去,也可能会被丢掉(或载断),具体情况由底层实现来决定。若要改变发送缓冲区大小,则:ds.setSendBufferSize(字节)即行。另:理论上:UDP包大小可达64k-UDP头长-IP包头长,但实际上,我们在写UDP程序时,不会定义这么大的UDP包,这是因为存在MTU的原因。而因特网的最小支持的MTU是576,因此,若UDP包太小,则每次数据有效传输效率低,若太大,由于MTU及UDP通信的性质,丢失的可能性加大。故:建议的UDP大小大约1k左右较好。以上仅供你参考 以太网EthernetII的MTU大部分不是1500字节吗 答:以太网的MTU是1500,但因特网上不仅是以太网。如:PPP拔号的MTU是296,因此规定:最小支持的MTU是576字节。 传输数据应该不会被buffer限制住如果你只收到了buffer大小的包,90%的可能是你的IO没有做flush动作,buffer写满,自动发送,但后面的没有写满,也没有flush,所以收不到try flush-----------------------------来上海吧http://topic.csdn.net/u/20080429/18/2ef7e7f7-7a00-4838-b4a7-ed8104b756ed.html datagramsocket是套接字不是字节流,没有flush的 传输数据设置成1k了,sendbuffersize也改了,还是不行大家传输网络数据都是用什么方法的? 答:几乎可以肯定,程序中有BUG。把代码发上来就一目了然了。 JFrame在去掉标题栏的情况下怎么实现拉大收缩边框的功能? 求JAVA程序设计课后答案 调试了很多遍了 求教各位高手 在JAVA中将下列字符串保存到SQL2000中不成功: Java程序员工作应该如何入门啊? 大家来帮帮忙 怎样把URI的参数转换成汉字 method parseInt 的问题 swing主界面图片的实时更新 为何我的程序不能导入corejava包? 关于翻译api方面的 如何在一个类中,访问另一个类的方法和域呢?
另:理论上:UDP包大小可达64k-UDP头长-IP包头长,但实际上,我们在写UDP程序时,不会定义这么大的UDP包,这是因为存在MTU的原因。而因特网的最小支持的MTU是576,因此,若UDP包太小,则每次数据有效传输效率低,若太大,由于MTU及UDP通信的性质,丢失的可能性加大。故:建议的UDP大小大约1k左右较好。
以上仅供你参考
如果你只收到了buffer大小的包,90%的可能是你的IO没有做flush动作,buffer写满,自动发送,但后面的没有写满,也没有flush,所以收不到try flush-----------------------------
来上海吧
http://topic.csdn.net/u/20080429/18/2ef7e7f7-7a00-4838-b4a7-ed8104b756ed.html