J029_UDP通信

一、需求描述

实现UDP的通信

1.1 一发一收

1.1.1 ClientTest1

java 复制代码
package com.itheima.udp;

import java.net.*;

import static java.net.InetAddress.*;

//完成udp通信快速入门,实现一收一发
public class ClientTest1 {
    public static void main(String[] args) throws Exception {
        //创建客户端对象
        DatagramSocket socket = new DatagramSocket();

        //创建数据包对象封装要发出去的数据
        byte[] bytes = "我是快乐的客户端,我负责发送数据".getBytes();

        //4个参数代表:
        //1、要发送的数据
        //2、要发送的数据大小(字节数)
        //3、服务端的IP
        //4、服务端程序的端口号
        DatagramPacket packet = new DatagramPacket(bytes,bytes.length, getLocalHost(),6666);

        //开始发送数据包的数据出去
        socket.send(packet);

        System.out.println("客户端数据发送完毕!!!");

        //发送后关闭通信管道
        socket.close();
    }
}

1.1.2 ServerTest1

java 复制代码
package com.itheima.udp;

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

public class ServerTest1  {
    public static void main(String[] args) throws Exception {
        System.out.println("-----服务端启动----------");
        //创建一个服务端对象,用来接收数据。需要注册端口
        DatagramSocket socket = new DatagramSocket(6666);

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

        //开始接受数据
        socket.receive(packet);

        //获取本次数据包接收了多少数据
        int len = packet.getLength();
        String res = new String(buffer,0,len);
        System.out.println(res);

        //获取客户端的IP地址和端口号
        System.out.println(packet.getAddress().getHostAddress());
        System.out.println(packet.getPort());

        //释放资源
        socket.close();
    }
}

1.1.3 运行结果

1.2 多发多收

1.2.1 Client

java 复制代码
package com.itheima.udp2;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.util.Scanner;

public class Client {
    public static void main(String[] args) throws Exception {
        //创建客户端对象
        DatagramSocket socket = new DatagramSocket();

        Scanner sc = new Scanner(System.in);

        while (true){
            //让用户输入要发送的消息
            System.out.println("请说:");
            String msg = sc.nextLine();

            //输入exit时退出
            if ("exit".equals(msg)) {
                System.out.println("欢迎下次光临!退出成功!!!");
                //关闭通道
                socket.close();
                break;
            }

            byte[] bytes = msg.getBytes();
            //创建发送数据的数据包
            DatagramPacket packet = new DatagramPacket(bytes,bytes.length,InetAddress.getLocalHost(),6666);

            //开始发送数据
            socket.send(packet);
        }

        //客户端数据发送完毕
        System.out.println("客户端数据发送完毕");
    }
}

1.2.2 Server

java 复制代码
package com.itheima.udp2;

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

public class Server  {
    public static void main(String[] args) throws Exception {
        System.out.println("-----服务端启动----------");
        //创建一个服务端对象,用来接收数据。需要注册端口
        DatagramSocket socket = new DatagramSocket(6666);

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

        while (true) {
            //开始接受数据
            socket.receive(packet);

            //获取本次数据包接收了多少数据
            int len = packet.getLength();
            String res = new String(buffer,0,len);
            System.out.println(res);

            //获取客户端的IP地址和端口号
            System.out.println(packet.getAddress().getHostAddress());
            System.out.println(packet.getPort());
            System.out.println("----------------------");
        }
    }
}

1.2.3 运行结果

相关推荐
honsor1 小时前
PoE温湿度传感器:一根网线供电+通信,即插即用,机房/配电室/仓库温湿度监测首选
运维·服务器·网络·数据库·人工智能·安全
Ivanqhz2 小时前
干涉图着色
java·服务器·网络·数据库·人工智能·深度学习
xiaoye-duck2 小时前
《Linux 网络编程》深入理解 IO 多路复用:select服务器完善、poll 接口详解与服务端改造实战
linux·网络
数字供应链安全产品选型2 小时前
智能体安全选型建议:抛开功能清单,用运行时硬指标甄别真实防护能力
网络·安全
AI备忘录2 小时前
(二十三)华为华三锐捷迈普思科 MLAG 跨设备配置命令(双活网关五厂商对照)
服务器·网络·华为
傲世仙尊3 小时前
HTTP起步-URL域名解析与协议的本质
网络·网络协议·http
智能化咨询3 小时前
(110页PPT)酒店智能化设计方案(附下载方式)
网络
重生之高冷汉堡包3 小时前
IPv4 与 IPv6:主要区别及选择哪个
网络·智能路由器
高升说4 小时前
深度相机接口选型:MIPI、USB3 与 GigE 的带宽估算与工程取舍
网络·人工智能·数码相机
成为深度学习高手4 小时前
DAG:沿时间与通道双相关建模的外生变量时序预测
网络·人工智能·深度学习·算法·机器学习·数据挖掘·时序数据库