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 运行结果

相关推荐
技术小齐20 分钟前
网络运维学习笔记 022 HCIA-Datacom新增知识点03园区网典型组网架构及案例实战
运维·网络·学习
黄卷青灯771 小时前
抓包工具 wireshark
网络·测试工具·wireshark
LUCIAZZZ2 小时前
Https解决了Http的哪些问题
java·网络·网络协议·spring·http·rpc·https
、BeYourself2 小时前
计算机网络常考大题
网络
ZachOn1y2 小时前
计算机网络:应用层 —— 文件传送协议 FTP
网络·计算机网络·应用层·文件传送协议ftp·考研408·知识积累
刘什么洋啊Zz2 小时前
剖析IO原理和零拷贝机制
java·运维·网络
阿里云云原生5 小时前
山石网科×阿里云通义灵码,开启研发“AI智造”新时代
网络·人工智能·阿里云·ai程序员·ai程序员体验官
一天八小时6 小时前
计算机网络————(一)HTTP讲解
网络协议·计算机网络·http
小冷爱学习!11 小时前
华为动态路由-OSPF-完全末梢区域
服务器·网络·华为
技术小齐12 小时前
网络运维学习笔记 016网工初级(HCIA-Datacom与CCNA-EI)PPP点对点协议和PPPoE以太网上的点对点协议(此处只讲华为)
运维·网络·学习