首页 > 编程语言 >Java 网络编程(六)UDP

Java 网络编程(六)UDP

时间:2022-11-23 10:46:56浏览次数:59  
标签:DatagramSocket UDP DatagramPacket Java socket 编程 new public String

UDP

发短信:不用连接,需要知道对方的地址

客户端:

//不需要连接服务器
public class UdpClientDemo01 {
    public static void main(String[] args) throws Exception{
        //1.建立一个Socket
        DatagramSocket socket = new DatagramSocket();
        //2.建个包
        String msg = "你好啊!";
        //发送给谁
        InetAddress localhost = InetAddress.getByName("localhost");
        int port = 9090;
        DatagramPacket datagramPacket = new DatagramPacket(msg.getBytes(),0,msg.getBytes().length,localhost,port);
        //3.发送包
        socket.send(datagramPacket);
        //4.关闭流
        socket.close();
    }
}

 

接收端:

//还要等待客户端的连接
public class UdpServerDemo01 {
    public static void main(String[] args) throws Exception{
        //开放端口
        DatagramSocket socket = new DatagramSocket(9090);
        //接收数据
        byte[] buffer = new byte[1024];
        DatagramPacket datagramPacket = new DatagramPacket(buffer, 0, buffer.length);
        socket.receive(datagramPacket);//阻塞接受
        System.out.println(datagramPacket.getAddress().getHostAddress());
        //关闭连接
        socket.close();
    }
}

  

循环接收消息:

发送方:

public class UdpSenderDemo01 {
    public static void main(String[] args) throws Exception{
        DatagramSocket socket = new DatagramSocket(8888);
        //准备数据;控制台读取System.in
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        while (true) {
            String data = reader.readLine();
            byte[] datas = data.getBytes();
            DatagramPacket packet = new DatagramPacket(datas, 0, datas.length, new InetSocketAddress("localhost", 6666));
            socket.send(packet);
            if (data.equals("bye")){
                break;
            }
        }
        socket.close();
    }
}

 

接收方:

public class UdpReceiveDemo01 {
    public static void main(String[] args) throws Exception {
        DatagramSocket socket = new DatagramSocket(6666);

        while (true){
            //准备接收包裹
            byte[] container = new byte[1024];
            DatagramPacket packet = new DatagramPacket(container,0,container.length);
            //断开连接
            byte[] data = packet.getData();
            String receiveData = new String(data,0,data.length);
            System.out.println(receiveData);
            if (receiveData.equals("bye")){
                break;
            }
        }
        socket.close();
    }
}

  

标签:DatagramSocket,UDP,DatagramPacket,Java,socket,编程,new,public,String
From: https://www.cnblogs.com/zhulei118/p/16917429.html

相关文章

  • 从头开始进行CUDA编程:流和事件
    流(Streams)当我们启动内核(函数)时,它会在GPU中排队等待执行,GPU会顺序按照启动时间执行我们的内核。设备中启动的许多任务可能依赖于之前的任务,所以“将它们放在同一个队......
  • 28个Javascript 数组方法提高开发效率
    28个Javascript数组方法清单列表web前端开发 2022-11-2310:05 发表于上海01、Array.map()返回一个新数组,其中包含对该数组中每个元素调用提供的函数的结果。const......
  • 【Java】Map
    遍历StringinsertKeyStr="";StringinsertValStr="";Integeri=0;for(Objectkey:map.keySet()){Objectvalue=map.get(key);insertKeyStr+=......
  • 计挑-21-编程4
    某游戏公司设计了一个奖励活动,给N个用户(1≤N≤10^7)连续编号为1到N,依据用户的编号S发放奖励。发放奖励规则为:公司随机设定三个非零正整数x,y,z。如果S同时是x、y的倍数,奖......
  • core java 基础
    JDK11中支持源文件直接运行,不用再执行javac命令了。目前较新的JDK安装时会自动配置javac、java命令的路径到Path环境变量中去,所以javac、java可以直接使用。但是以前下载......
  • 如何通过Java应用程序合并和取消合并 Excel 单元格
    在整理Excel中的数据时,我们不可避免地需要合并和取消合并单元格。同时,如果需要创建跨列或行的标题,我们可以合并Excel单元格以在电子表格中轻松完成此操作。合并单元......
  • 计挑-21-编程3
    某地大数据防疫平台记录了往来的所有防疫相关信息,包括本地或外地人员、健康码颜色、接种疫苗情况、最近一次核酸结果、最近一次核酸检测时间等。该地希望依据平台数据组......
  • java 基础——函数(方法)
    【注:本篇适合零基础】 函数基本定义、语法首先我们先要了解什么是函数? 函数的定义:在类中,有特定功能的一段独立代码块 说人话:简单来说就是,在一个类(一个 .java ......
  • 【HarmonyOS】JavaUI组件触摸事件分发
    ​熟悉Android开发的同学肯定对触摸事件分发比较了解,那么在HarmonyOS开发应用需要对触摸事件处理该怎么做呢,下面结合一个实际的案例来讲解一下。 【需求】封装一个自定......
  • 【Java】StringBuffer和StringBuilder
    1.String、StringBuffer、StringBuilder三者对比底层都使用char[]数组存储数据。String:不可变的字符序列。StringBuffer:可变的字符序列,线程安全的,效率低。Stringbuild......