机器A, 监听 UDP 3000 端口。问题:  机器B发了一个UDP包(目标地址:机器A的IP,目标端口:8000),请问在机器A没有监听这个8000端口的情况下,机器B发的这个数据包最终会到哪里?机器A能否收到这个数据包? 机器B发送大量的UDP包到机器A没有监听的端口上,会不会消耗机器A的带宽?

解决方案 »

  1.   

    因为对UDP细节不是很了解,请教一下高手
      

  2.   

    public class DatagramSocketextends Object此类表示用来发送和接收数据报包的套接字。 数据报套接字是包投递服务的发送或接收点。每个在数据报套接字上发送或接收的包都是单独编址和路由的。从一台机器发送到另一台机器的多个包可能选择不同的路由,也可能按不同的顺序到达。 在 DatagramSocket 上总是启用 UDP 广播发送。为了接收广播包,应该将 DatagramSocket 绑定到通配符地址。在某些实现中,将 DatagramSocket 绑定到一个更加具体的地址时广播包也可以被接收。 示例:DatagramSocket s = new DatagramSocket(null); s.bind(new InetSocketAddress(8888)); 这等价于:DatagramSocket s = new DatagramSocket(8888); 两个例子都能创建能够在 UDP 8888 端口上接收广播的 DatagramSocket。 
      

  3.   

    这意味着 发 udp包,要先与对方建立连接?
      

  4.   

    这个的确是不需要先建立连接的,至于证据吗,你可以去看看udp协议的原理。
    这个包严格来说是可以到达A的,但是到达A之后会直接被丢弃掉。
    至于会不会占A的带宽,还真没研究过。楼主可以找两台机器测试一下。
    期待楼主的测试结果哦!
      

  5.   

    这个的确是不需要先建立连接的,至于证据吗,你可以去看看udp协议的原理。
    这个包严格来说是可以到达A的,但是到达A之后会直接被丢弃掉。
    至于会不会占A的带宽,还真没研究过。楼主可以找两台机器测试一下。
    期待楼主的测试结果哦!