请教大侠:
    我在UDP基础上,编写协议。使用Java的DatagramChannel类,但是发现,当发送端速度过快的时候,就会丢包。但是我用抓包工具看到,所有的数据包都已经收到了。在程序中做了一些记录,发现当接收端突然收到8或9Kbyte以上的数据包时候,后面的就会丢掉了。
    通过上面,我猜测,是否是DatagramChannel有内部的缓存?而且限制在了8kbyte?
    我上网查了,没找到。请大侠指点。
    如果有,怎么进行设置?非常感谢,,非常着急。。

解决方案 »

  1.   

    是有的,,通过 DatagramChannel.socket().getReceiveBufferSize()就可以得到,,默认8kbytes。
      

  2.   

    o .只是在大家指点之前,自己先找到了答案。还有一个问题就是,一个datagramchannel当用来同时进行收发的时候(就是,收到一个包,就发一个反馈包),为什么当发送速度快的时候,会很快就把接收缓存占满了那?我设了100k也是一样。。请指点啊,,急死我了。
      

  3.   

    “发送快,接收也快,缓存就容易满”那为什么直接用UDPSocket来接收,而不发送反馈包,就没问题?而且缓存只是设置了8k。