UDP广播,多播,单播

来源:互联网 发布:非英文域名 编辑:程序博客网 时间:2024/04/29 08:42

       在说udp广播,多播,单播之前,首先说一下udp这个协议,它是一种无连接,不可靠的网络通信协议,但基于UDP的消息传递更快。在使用它传输数据时,用户无法知道数据是否正确到达主机,也不能确定到达目的地的顺序是否和发送的信息相同,所以有时候会出现丢包现象。
       看书总结出的对广播的看法, *广播*的意思是往这个地址发送的信息,在整个网段中的主机都能收到信息。广播分为直接广播地址和受限广播地址,受限广播这个很好理解,就是255.255.255.255,它不经路由转发,发送给同一网段下的所有主机。而直接广播的地址是主机位全为1,可以由主机的ip地址和掩码计算的得到,如IP:192.168.48.192,掩码:255.255.252.0,两者进行与运算得到的是网络地址(192.168.48.255),由掩码可以得到主机位有10位,所以将网络地址的后10位的0全部变为1,即为直接广播地址(192.168.51.255),它可以经过路由转发。
       在发送包使用到*多播*时,需要将两个不同的主机加入到同一个组中,地址在224.0.0.0~224.255.255.255之间,这类地址并不代表某个主机的位置,加入到同一个组中的主机可以在某个端口上广播信息,也可以在某个端口上接收信息。
       在发送*单播*时,需要知道对方主机的地址,可在两个主机间传输数据。
       在java语言中,基于udp通信的基本模式为:将数据打包,然后将数据发送到目的地;接收别人发来的数据包,然后查看数据包。java语言中新建udp socket类使用DatagramSocket类,将数据打包使用到DatagramPacket类。
       发送数据包:1.使用DatagramSocket()方法创建一个数据包;
              2.使用DatagramPacket(byte[]buf,int offset,int length,InetAddress address,int port)创建要发送的数据包。
                3.使用DatagramSocket类的send()

0 0