Java网络编程---UDP

客户端

java 复制代码
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;

public class Client {
    public static void main(String[] args) throws Exception {
        //1.创建客户端对象
        DatagramSocket socket = new DatagramSocket();
        //2.创建数据包对象封装要发出去的数据
        /* public DatagramPacket(byte buf[], int offset, int length,
        InetAddress address, int port)*/
        Scanner sc = new Scanner(System.in);
        while (true){
            //将数据转成字节
            System.out.println("user:");
            String msg = sc.nextLine();
            if ("exit".equals(msg)){
                System.out.println("退出成功!");
                socket.close();
                break;
            }
            byte[] bytes =msg.getBytes();
            DatagramPacket packet = new DatagramPacket(bytes, bytes.length,InetAddress.getLocalHost(),6666);
            //3.发送
            socket.send(packet);
        }
    }
}

服务端

java 复制代码
import java.nio.charset.StandardCharsets;


import java.net.DatagramPacket;
import java.net.DatagramSocket;

public class Server {
    public static void main(String[] args) throws Exception{
        System.out.println("----------服务端-----------");
        //1.创建一个服务端的对象
        DatagramSocket socket = new DatagramSocket(6666);

        //2.创建一个数据包对象  来接数据
        byte[] buffer = new byte[1024 * 64]; //64kb
        DatagramPacket packet = new DatagramPacket(buffer, buffer.length);

        while (true){
            //接收数据
            socket.receive(packet);

            //打印出来
            int len = packet.getLength();
            String  rs =  new String(buffer,0,len, StandardCharsets.UTF_8);
            System.out.println(rs);


            //接收的客户端的信息
            System.out.println(packet.getAddress());
            System.out.println(packet.getPort());
            System.out.println("-----------------------------------------");
        }

    }
}

效果

相关推荐
Seven9721 分钟前
虚拟线程深度解析:轻量并发编程的未来趋势
java
雨中飘荡的记忆10 小时前
ElasticJob分布式调度从入门到实战
java·后端
考虑考虑19 小时前
JDK25模块导入声明
java·后端·java ee
_小马快跑_20 小时前
Java 的 8 大基本数据类型:为何是不可或缺的设计?
java
Re_zero1 天前
线上日志被清空?这段仅10行的 IO 代码里竟然藏着3个毒瘤
java·后端
洋洋技术笔记1 天前
Spring Boot条件注解详解
java·spring boot
程序员清风2 天前
程序员兼职必看:靠谱软件外包平台挑选指南与避坑清单!
java·后端·面试
皮皮林5512 天前
利用闲置 Mac 从零部署 OpenClaw 教程 !
java
华仔啊2 天前
挖到了 1 个 Java 小特性:var,用完就回不去了
java·后端
SimonKing2 天前
SpringBoot整合秘笈:让Mybatis用上Calcite,实现统一SQL查询
java·后端·程序员