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 }

运行效果如下:

转载于:https://www.cnblogs.com/hebao0514/p/4859536.html

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

  1. Java基础知识强化之网络编程笔记05:UDP之多线程实现聊天室案例

    1. 通过多线程改进刚才的聊天程序,这样我就可以实现在一个窗口发送和接收数据了 2.  代码示例: (1)SendThread.java,如下: 1 package com.himi.udpDemo2 ...

  2. Java基础知识强化之网络编程笔记03:UDP之UDP协议发送数据 和 接收数据

    1. UDP协议发送数据 和 接收数据 UDP协议发送数据: • 创建发送端的Socket对象 • 创建数据,并把数据打包 • 调用Socket对象的发送方法,发送数据包 • 释放资源  UDP协议接 ...

  3. Java基础知识强化之网络编程笔记25:Android网络通信之 Future接口介绍(Java程序执行超时)...

    1. Future接口简介 在Java中,如果需要设定代码执行的最长时间,即超时,可以用Java线程池ExecutorService类配合Future接口来实现. Future接口是Java标准API ...

  4. Java基础知识强化之集合框架笔记76:ConcurrentHashMap之 ConcurrentHashMap简介

    1. ConcurrentHashMap简介: ConcurrentHashMap是一个线程安全的Hash Table,它的主要功能是提供了一组和Hashtable功能相同但是线程安全的方法.Conc ...

  5. Java基础知识强化之IO流笔记44:IO流练习之 复制图片的 4 种方式案例

    1. 复制图片的 4 种方式案例: 分析: 复制数据,如果我们知道用记事本打开并能够读懂,就用字符流,否则用字节流. 通过该原理,我们知道我们应该采用字节流. 而字节流有4种方式,所以做这个题目我们有 ...

  6. Java基础知识强化之IO流笔记03:throws的方式处理异常

    1. 什么时候使用throws ? (1)定义功能方法时候,需要把出现的问题暴露出来,让调用者去处理.那么就通过throws在方法上标识. (2)有时候,我们是可以对异常进行处理的,但是又有些时候,我 ...

  7. Java基础知识强化之IO流笔记41:字符流缓冲流之复制文本文件案例02(使用 [ newLine() / readLine() ] )(重要)...

    1. 使用字符流缓冲流的特殊功能 [ newLine() / readLine() ] 需求:把当前项目目录下的a.txt内容复制到当前项目目录下的b.txt中  数据源: a.txt -- 读取数据 ...

  8. Java基础知识强化之IO流笔记32:转换流之OutputStreamWriter的使用

    1. OutputStreamWriter的使用 OutputStreamWriter(OutputStream out):根据默认编码把字节流的数据转换为字符流 OutputStreamWriter ...

  9. Java基础知识强化之集合框架笔记56:Map集合之HashMap集合(HashMapString,Student)的案例...

    1. HashMap集合(HashMap<String,Student>)的案例 HashMap是最常用的Map集合,它的键值对在存储时要根据键的哈希码来确定值放在哪里. HashMap的 ...

最新文章

  1. html怎么定位布局位置,CSS的position定位布局问题
  2. Dot Net设计模式—外观模式
  3. Go sync.WaitGroup的用法
  4. 直流UPS的研究和应用前景
  5. linux无法关机 grub2,Ubuntu关机卡住无法关机如何解决?
  6. python3安装requests_小小-Centos7安装Python3并安装Requests的方法
  7. Docker在linux下的安装
  8. MFC将bmp图像设为背景
  9. mysql5.7不区分大小写_转载:mysql5.7设置不区分大小写
  10. mysql—触发器trigger
  11. php move函数,php – 在null上调用成员函数move()
  12. spring和mybatis整合代码
  13. 2022秋招 华为硬件工程师-单板硬件开发面经
  14. php 源代码 即时通讯,php开源免费即时通讯源码-目前有哪些完全的开源的PHP,商城代码...
  15. java 数字转换人民币大写
  16. python词云图_Python快速生成词云图,这是最详细的教程,没有之一!
  17. C语言:梯形面积的求解公式为 S = (a + b) * h / 2。从键盘读入一个梯形的上底a、下底b和高h,请计算表梯形的面积。(结果保留1位小数)
  18. 通俗易懂解释raid0和raid5_raid0和raid5区别是什么?
  19. Linux服务器程序规范化
  20. 索尼sw2刷android wear,索尼SW2改进不错 体验很舒适_索尼 SmartWatch SW2_GPS评测-中关村在线...

热门文章

  1. windows虚拟声卡直播_【韭菜爱镰刀】高性价比的录音/直播设备推荐
  2. 【kafka】多图解Kafka中的数据采集和统计机制
  3. 【Flink】Flink SQL 开源UI平台 flink-streaming-platform-web
  4. 【clickhouse】clickhouse 配置 安装目录
  5. [Elasticsearch] es 6.8 编译报错 Unsupported class file major version 57
  6. 20-10-025-安装-KyLin-2.6.0-单机版安装(MAC官网下载)成功
  7. Docker : 获取运行容器的IP地址
  8. Flink : exitCode=1 the main method caused an error: could not deploy yarn job cluster
  9. 95-070-040-源码-源码调试-FLINK源代码调试方式
  10. 95-140-110-源码-transform-算子keyBy