首页 > 其他分享 >UDP协议类_DatagramSocket——组播代码实现

UDP协议类_DatagramSocket——组播代码实现

时间:2023-03-15 15:12:39浏览次数:49  
标签:DatagramSocket UDP 组播 224.0 new 接收数据 dp

组播地址:224.0.0.0--239.225.225.225,其中224.0.0.0--224.0.0.225为预留的组播地址,我们一般使用224.0.1.0及其之后的地址

public class ClientDemo {

    public static void main(String[] args) throws IOException {
        // 组播 DatagramSocket客户端发送数据的步骤

        // 1:创建DatagramSocket客户端对象
        DatagramSocket ds = new DatagramSocket();
        // 2:创建数据并打包(DatagramPacket)
        String s = "组播,你好啊。。。";
        byte[] bytes = s.getBytes();
        // 这里的地址是组播的地址
        InetAddress address = InetAddress.getByName("224.0.1.0");
        int port = 10000;
        DatagramPacket dp = new DatagramPacket(bytes, bytes.length, address, port);
        // 3:调用DatagramSocket客户端对象的方法发送数据
        System.out.println("发送数据前");
        ds.send(dp);
        System.out.println("发送数据后");
        // 4:释放资源
        ds.close();

    }

}
public class ServiceDemo {

    public static void main(String[] args) throws IOException {
        // DatagramSocket接收端接收数据的步骤

        // 1、创建组播接收端对象 new MulticastSocket(10000)表示从10000端口接收数据,如果不写参数,默认从随机端口接收数据。
        MulticastSocket ms = new MulticastSocket(10000);

        // 2、创建一个用于接收数据的箱子
        DatagramPacket dp = new DatagramPacket(new byte[1024], 1024);

        // 3、将接收端放入一个组播中,就是将当前计算机绑定一个组播地址,表示添加到这一组中
        ms.joinGroup(InetAddress.getByName("224.0.1.0"));

        // 4、调用DatagramSocket接收端对象的方法接收数据并放入箱子
        System.out.println("接收数据前");
        ms.receive(dp);
        System.out.println("接收数据后");

        // 5、解析箱子(数据包),并把数据展示
        byte[] data = dp.getData();
        int length = dp.getLength();
        String s = new String(data, 0, length);
        System.out.println(s);
        
        // 6、释放资源
        ms.close();

    }

}

 

标签:DatagramSocket,UDP,组播,224.0,new,接收数据,dp
From: https://www.cnblogs.com/weiduaini/p/17218598.html

相关文章

  • UDP协议类_DatagramSocket
    publicclassClientDemo{publicstaticvoidmain(String[]args)throwsIOException{//DatagramSocket客户端发送数据的步骤//1:创建Data......
  • TCP/UDP
    一、概述接着温顾TCP/UDP UDP(用户数据报):1.无连接2.不可靠传输协议3.传输速率比较快4.首部字段较少5.应用场景......
  • udp客户端 用不用 bind 的区别
    无连接的socket的客户端和服务端以及面向连接socket的服务端通过调用bind函数来配置本地信息。使用bind函数时,通过将my_addr.sin_port置为0,函数会自动为你选择一个未占用的......
  • 通过RestController里面的方法,改变UDP接收到的结构体里面的数据InputStruct
    我有一个java的springboot程序,里面包括一个UDP监听程序,监听来自第三方UDP发送程序。第三方UDP发送过来的是一个结构体,我在本地程序也建立一个结构体InputStruct来接收数据,......
  • linux修改组播订阅数量限制
    组播数量限制内核参数存放位置,/proc/sys/net/ipv4/igmp_max_memberships修改组播限制数量,切换至root用户临时修改sysctlnet.ipv4.igmp_max_memberships=200永久......
  • 单机上的UDP客户端与服务器端
    服务端:#include<stdio.h>#include<stdlib.h>#include<winsock2.h>#pragmacomment(lib,"ws2_32")staticSOCKETUdp;intudp_init(char*ip,intport){......
  • IP TCP UDP数据报头的相关记录
    IPTCPUDP数据报头的相关记录IP数据报头typedefstruct_IP_HEADER_V4_{ union { UINT8versionAndHeaderLength; struct { UINT8headerLength:4; U......
  • 02_11_Java语音进阶||day11_网络编程【TCP|UDP】
    第一章网络编程入门1.1软件结构两种架构各有优势,但是无论哪种架构,都离不开网络的支持。“网络编程”,就是在一定的协议下,实现两台计算机的通信的程序1.2网络编程三要素_网......
  • python实现客户端和服务端的UDP相互通信
    实验指南这篇博客旨在实验客户端和服务端相互发送消息的实验,实验成功的现象为,客户端和服务端的两个窗口,即client和server左上角均被打上文字,因为客户端是没有给图片附上文......
  • TCP/UDP
    TCP与UDP在后台都用到套接字Socket,当准确度要求高的时候,用TCP。若追求性能和速度,而且对准确度要求不高时,用UDP。TCP协议和UDP协议连接过程的区别如下:基于连接与无连接;......