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 }
运行效果如下:
转载于:https://www.cnblogs.com/hebao0514/p/4859536.html
Java基础知识强化之网络编程笔记04:UDP之发送端的数据来自于键盘录入案例相关推荐
- Java基础知识强化之网络编程笔记05:UDP之多线程实现聊天室案例
1. 通过多线程改进刚才的聊天程序,这样我就可以实现在一个窗口发送和接收数据了 2. 代码示例: (1)SendThread.java,如下: 1 package com.himi.udpDemo2 ...
- Java基础知识强化之网络编程笔记03:UDP之UDP协议发送数据 和 接收数据
1. UDP协议发送数据 和 接收数据 UDP协议发送数据: • 创建发送端的Socket对象 • 创建数据,并把数据打包 • 调用Socket对象的发送方法,发送数据包 • 释放资源 UDP协议接 ...
- Java基础知识强化之网络编程笔记25:Android网络通信之 Future接口介绍(Java程序执行超时)...
1. Future接口简介 在Java中,如果需要设定代码执行的最长时间,即超时,可以用Java线程池ExecutorService类配合Future接口来实现. Future接口是Java标准API ...
- Java基础知识强化之集合框架笔记76:ConcurrentHashMap之 ConcurrentHashMap简介
1. ConcurrentHashMap简介: ConcurrentHashMap是一个线程安全的Hash Table,它的主要功能是提供了一组和Hashtable功能相同但是线程安全的方法.Conc ...
- Java基础知识强化之IO流笔记44:IO流练习之 复制图片的 4 种方式案例
1. 复制图片的 4 种方式案例: 分析: 复制数据,如果我们知道用记事本打开并能够读懂,就用字符流,否则用字节流. 通过该原理,我们知道我们应该采用字节流. 而字节流有4种方式,所以做这个题目我们有 ...
- Java基础知识强化之IO流笔记03:throws的方式处理异常
1. 什么时候使用throws ? (1)定义功能方法时候,需要把出现的问题暴露出来,让调用者去处理.那么就通过throws在方法上标识. (2)有时候,我们是可以对异常进行处理的,但是又有些时候,我 ...
- Java基础知识强化之IO流笔记41:字符流缓冲流之复制文本文件案例02(使用 [ newLine() / readLine() ] )(重要)...
1. 使用字符流缓冲流的特殊功能 [ newLine() / readLine() ] 需求:把当前项目目录下的a.txt内容复制到当前项目目录下的b.txt中 数据源: a.txt -- 读取数据 ...
- Java基础知识强化之IO流笔记32:转换流之OutputStreamWriter的使用
1. OutputStreamWriter的使用 OutputStreamWriter(OutputStream out):根据默认编码把字节流的数据转换为字符流 OutputStreamWriter ...
- Java基础知识强化之集合框架笔记56:Map集合之HashMap集合(HashMapString,Student)的案例...
1. HashMap集合(HashMap<String,Student>)的案例 HashMap是最常用的Map集合,它的键值对在存储时要根据键的哈希码来确定值放在哪里. HashMap的 ...
最新文章
- html怎么定位布局位置,CSS的position定位布局问题
- Dot Net设计模式—外观模式
- Go sync.WaitGroup的用法
- 直流UPS的研究和应用前景
- linux无法关机 grub2,Ubuntu关机卡住无法关机如何解决?
- python3安装requests_小小-Centos7安装Python3并安装Requests的方法
- Docker在linux下的安装
- MFC将bmp图像设为背景
- mysql5.7不区分大小写_转载:mysql5.7设置不区分大小写
- mysql—触发器trigger
- php move函数,php – 在null上调用成员函数move()
- spring和mybatis整合代码
- 2022秋招 华为硬件工程师-单板硬件开发面经
- php 源代码 即时通讯,php开源免费即时通讯源码-目前有哪些完全的开源的PHP,商城代码...
- java 数字转换人民币大写
- python词云图_Python快速生成词云图,这是最详细的教程,没有之一!
- C语言:梯形面积的求解公式为 S = (a + b) * h / 2。从键盘读入一个梯形的上底a、下底b和高h,请计算表梯形的面积。(结果保留1位小数)
- 通俗易懂解释raid0和raid5_raid0和raid5区别是什么?
- Linux服务器程序规范化
- 索尼sw2刷android wear,索尼SW2改进不错 体验很舒适_索尼 SmartWatch SW2_GPS评测-中关村在线...
热门文章
- windows虚拟声卡直播_【韭菜爱镰刀】高性价比的录音/直播设备推荐
- 【kafka】多图解Kafka中的数据采集和统计机制
- 【Flink】Flink SQL 开源UI平台 flink-streaming-platform-web
- 【clickhouse】clickhouse 配置 安装目录
- [Elasticsearch] es 6.8 编译报错 Unsupported class file major version 57
- 20-10-025-安装-KyLin-2.6.0-单机版安装(MAC官网下载)成功
- Docker : 获取运行容器的IP地址
- Flink : exitCode=1 the main method caused an error: could not deploy yarn job cluster
- 95-070-040-源码-源码调试-FLINK源代码调试方式
- 95-140-110-源码-transform-算子keyBy