• Java基础知识强化之网络编程笔记04:UDP之发送端的数据来自于键盘录入案例


    1. 数据来自于键盘录入

    键盘录入数据要自己控制录入结束。

    2. 代码实现:

    (1)发送端:

     1 package com.himi.updDemo1;
     2 
     3 import java.io.IOException;
     4 import java.net.DatagramPacket;
     5 import java.net.DatagramSocket;
     6 import java.net.InetAddress;
     7 import java.util.Scanner;
     8 
     9 /**
    10  * 
    11  * UDP协议发送数据:
    12  * 1. 创建发送端的Socket对象
    13  * 2. 创建数据,并把数据打包
    14  * 3. 调用Socket对象的发送方法,发送数据包
    15  * 4. 释放资源
    16  *
    17  */
    18 public class UdpSendDemo {
    19     public static void main(String[] args) throws IOException {
    20         //创建发送端的Socket对象,这里使用的UDP使用的客户端的Socket对象类是DatagramSocket.
    21         //DatagramSocket:DatagramSocket()
    22         DatagramSocket ds = new DatagramSocket();
    23         
    24         //创建数据,并把数据打包
    25         //DatagramPacket:此类表示数据报包
    26         /**DatagramPacket(byte[] buf, int length, InetAddress address, int port) 
    27         **         构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。
    28         */
    29         
    30         while(true) {
    31         Scanner  sc = new Scanner(System.in);
    32         String data = sc.nextLine();
    33         if(data.equals("886")){
    34             break;
    35         }
    36             
    37         byte[] bytes = data.getBytes();
    38         //IP地址对象
    39         InetAddress address = InetAddress.getByName("49.123.72.145");
    40         //端口号
    41         int port = 10086;
    42         //数据打包
    43         DatagramPacket dp = new DatagramPacket(bytes, bytes.length, address, port);
    44         
    45             
    46         //调用Socket对象的发送方法,发送数据包
    47         //public void send(DatagramPacket p)
    48         ds.send(dp);
    49         
    50         }
    51         //释放资源
    52         ds.close();
    53         
    54     }
    55 
    56 }

    (2)接收端:

     1 package com.himi.updDemo1;
     2 
     3 import java.io.IOException;
     4 import java.net.DatagramPacket;
     5 import java.net.DatagramSocket;
     6 import java.net.InetAddress;
     7 
     8 /**
     9  * 
    10  * UDP协议接收数据:
    11  * 1. 创建接收端的Socket对象
    12  * 2. 创建数据包,接收数据(接收容器)
    13  * 3. 调用Socket对象的接收方法,接收数据包
    14  * 4. 解析数据包,并显示在控制台
    15  * 5. 释放资源
    16  *
    17  */
    18 
    19 public class UdpReceiveDemo {
    20 
    21     public static void main(String[] args) throws IOException {
    22         // 创建接收端的Socket对象
    23         //DatagramSocket(int port):创建数据报套接字并将其绑定到本地主机上的指定端口
    24         DatagramSocket ds = new DatagramSocket(10086);
    25         
    26         
    27         while (true) {
    28             // 创建数据包,接收数据(接收容器)
    29             // DatagramPacket(byte[] buf, int length)
    30             byte[] bytes = new byte[1024];
    31             int length = bytes.length;
    32 
    33             DatagramPacket dp = new DatagramPacket(bytes, length);
    34 
    35             // 调用Socket对象的接收方法,接收数据包
    36             // public void receive(DatagramPacket p)
    37             ds.receive(dp);// 阻塞式方法
    38 
    39             // 解析数据包,并显示在控制台
    40             // 获取对方的IP
    41             // public InetAddress getAddress()
    42             InetAddress address = dp.getAddress();
    43             String IP = address.getHostAddress();
    44 
    45             // public byte[] getData():获取数据的缓冲区
    46             // public int getLength():获取数据的实际长度
    47             byte[] bys = dp.getData();
    48             int len = dp.getLength();
    49             String s = new String(bys, 0, len);
    50 
    51             System.out.println("发送端" + IP + "的数据:" + s);
    52         }
    53         
    54         //释放资源
    55         //ds.close();
    56         
    57                 
    58 
    59     }
    60 
    61 }

    运行效果如下:

  • 相关阅读:
    MongoDB
    Vivado HLS与System Generator:联系与区别
    FPGA的图像处理技术,你知道多少?
    增量与位置PID
    zedboard之GPIO驱动(从FPGA一直到LINUX应用)
    珠峰攀登记录
    Source Insight建工程之Kernel
    zedboard 驱动理解
    研一上学期总结以及规划
    数字图象处理MATLAB学习
  • 原文地址:https://www.cnblogs.com/hebao0514/p/4859536.html
Copyright © 2020-2023  润新知