UDP通信(二)下

简介: UDP通信(二)

二.四.二 客户端


    @Test
    public void send4Test() throws Exception{
        //1. 定义客户端
        System.out.println("------------发送方开始发送图片文件数据--------------");
        DatagramSocket datagramSocket=new DatagramSocket(6666);
        //2. 准备数据
        //3. 将数据转换成字节数据
        String path="E:"+ File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc"
                +File.separator+"129.png";
        byte[] bytes= IOUtils.fileToByteArray(path);
        //   System.out.println("发送数据为:"+new String(bytes));
        //4. 封装进包
        InetSocketAddress inetSocketAddress=new InetSocketAddress("localhost",9999);
        DatagramPacket datagramPacket=new DatagramPacket(bytes,0,bytes.length,inetSocketAddress);
        datagramSocket.send(datagramPacket);
        //关闭流
        datagramSocket.close();
    }


二.四.三 服务器端


@Test
    public void send4Test() throws Exception{
        //1. 定义服务器
        System.out.println("---------------服务器启动成功,接收图片文件数据----------------");
        DatagramSocket datagramSocket=new DatagramSocket(9999);
        //2. 设置数据
        byte[] bytes=new byte[1024*20];
        //能接收的大小,并不是实际接收的大小
        DatagramPacket datagramPacket=new DatagramPacket(bytes,0,bytes.length);
        //3. 阻塞式接收传递过来的数据
        datagramSocket.receive(datagramPacket);
        //4. 获取接收的数据
        byte[] content=datagramPacket.getData();
        int len=datagramPacket.getLength();
       String path="E:"+ File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc"
               +File.separator+"129Udp.png";
        IOUtils.byteArrayToFile(content,path);
        //5 关闭流
        datagramSocket.close();
    }


二.四.四 运行程序


运行服务器端, 后运行客户端, 查看文件系统


20200625121908708.png


二.五 控制台输入单条数据


二.五.一 客户端


 public static void main(String[] args) {
        try {
           send5Test();
            //send6Test();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static void send5Test() throws Exception{
        //1. 定义客户端
        System.out.println("------------发送方开始发送控制台打印数据--------------");
        DatagramSocket datagramSocket=new DatagramSocket(6666);
        //2. 准备数据
        BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(System.in));
        String content=bufferedReader.readLine();
        byte[] bytes=content.getBytes("UTF-8");
        //   System.out.println("发送数据为:"+new String(bytes));
        //4. 封装进包
        InetSocketAddress inetSocketAddress=new InetSocketAddress("localhost",9999);
        DatagramPacket datagramPacket=new DatagramPacket(bytes,0,bytes.length,inetSocketAddress);
        datagramSocket.send(datagramPacket);
        //关闭流
        datagramSocket.close();
    }


二.五.二 服务器端


@Test
    public void send5Test() throws Exception{
        //1. 定义服务器
        System.out.println("---------------服务器启动成功,接收控制台数据----------------");
        DatagramSocket datagramSocket=new DatagramSocket(9999);
        //2. 设置数据
        byte[] bytes=new byte[1024];
        //能接收的大小,并不是实际接收的大小
        DatagramPacket datagramPacket=new DatagramPacket(bytes,0,bytes.length);
        //3. 阻塞式接收传递过来的数据
        datagramSocket.receive(datagramPacket);
        //4. 获取接收的数据
        byte[] content=datagramPacket.getData();
        int len=datagramPacket.getLength();
        System.out.println("接收的内容是:"+new String(content,0,len));
        datagramSocket.close();
    }


二.五.三 运行程序


先运行服务器端,


20200625121917748.png


运行客户端,输入要打印的数据


20200625121923541.png


再次查看服务器端


20200625121927991.png


二.六 控制台输入多条数据


需要用 循环进行创建。


二.六.一 客户端


public static void send6Test() throws Exception{
        //1. 定义客户端
        System.out.println("------------发送方开始发送控制台多条数据--------------");
        DatagramSocket datagramSocket=new DatagramSocket(6666);
        //2. 准备数据
        BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(System.in));
        while(true){
            String content=bufferedReader.readLine();
            byte[] bytes=content.getBytes("UTF-8");
            //   System.out.println("发送数据为:"+new String(bytes));
            //4. 封装进包
            InetSocketAddress inetSocketAddress=new InetSocketAddress("localhost",9999);
            DatagramPacket datagramPacket=new DatagramPacket(bytes,0,bytes.length,inetSocketAddress);
            datagramSocket.send(datagramPacket);
            if("bye".equalsIgnoreCase(content)||"quit".equalsIgnoreCase(content)){
                System.out.println("退出程序");
                break;
            }
        }
        //关闭流
        datagramSocket.close();
    }


二.六.二 服务器端


 @Test
    public void send6Test() throws Exception{
        //1. 定义服务器
        System.out.println("---------------服务器启动成功,接收控制台多条数据----------------");
        DatagramSocket datagramSocket=new DatagramSocket(9999);
        //2. 设置数据
        byte[] bytes=new byte[1024];
        while(true){
            //能接收的大小,并不是实际接收的大小
            DatagramPacket datagramPacket=new DatagramPacket(bytes,0,bytes.length);
            //3. 阻塞式接收传递过来的数据
            datagramSocket.receive(datagramPacket);
            //4. 获取接收的数据
            byte[] content=datagramPacket.getData();
            int len=datagramPacket.getLength();
            String temp=new String(content,0,len);
            if("bye".equalsIgnoreCase(temp)||"quit".equalsIgnoreCase(temp)){
                break;
            }
            System.out.println("echo:"+temp);
        }
        datagramSocket.close();
    }


二.六.三 运行程序


运行服务器,再运行客户端


20200625121935424.png


服务器端


20200625121941231.png


谢谢您的观看,如果喜欢,请关注我,再次感谢 !!!

相关文章
|
1月前
|
网络协议 算法 Java
【Java网络编程】网络编程概述、UDP通信(DatagramPacket 与 DatagramSocket)
【Java网络编程】网络编程概述、UDP通信(DatagramPacket 与 DatagramSocket)
31 3
|
11天前
UDP通信
UDP通信
8 1
|
24天前
|
网络协议 安全 Java
网络编程、网络编程的三要素、TCP/UDP通信、三次握手和四次挥手
网络编程、网络编程的三要素、TCP/UDP通信、三次握手和四次挥手
28 1
网络编程、网络编程的三要素、TCP/UDP通信、三次握手和四次挥手
|
1月前
|
存储 网络协议 关系型数据库
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
|
9月前
|
网络协议 Java
Java UDP通信详解
UDP(User Datagram Protocol)是一种无连接的网络传输协议,它不像TCP那样需要建立连接和维护状态,因此更加轻量级。UDP适用于那些对数据传输的实时性要求较高,可以容忍一定数据丢失的场景。本文将详细介绍Java中如何使用UDP协议进行网络通信,包括UDP套接字、数据传输、服务器和客户端的创建等。
146 0
|
1月前
UDP通信程序练习(实现模拟聊天室)
UDP通信程序练习(实现模拟聊天室)
64 0
|
1月前
|
存储 网络协议 Java
UDP通信程序的详细解析
2.UDP通信程序 2.1 UDP发送数据 Java中的UDP通信 UDP协议是一种不可靠的网络协议,它在通信的两端各建立一个Socket对象,但是这两个Socket只是发送,接收数据的对象,因此对于基于UDP协议的通信双方而言,没有所谓的客户端和服务器的概念
44 0
|
6月前
|
C语言
UDP通信原理及网络编程
UDP通信原理及网络编程
58 0
|
8月前
|
存储 网络协议 安全
UDP通信机制详解
UDP通信机制详解
204 0
|
9月前
|
网络协议 安全
基于TCP和UDP的Socket通信
TCP是面向连接的,安全的协议,它是一对一的关系 udp是面向无连接的,不安全,不可靠的,但是效率很高,支持一对一,一对多,多对多发送,udp传输的格式为数据报,要将其封装为数据报才能发送,
56 1