1. UDP协议发送数据 和 接收数据

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

 UDP协议接收数据:

      • 创建接收端的Socket对象
      • 创建数据包,接收数据(接收容器)
      • 调用Socket对象的接收方法,接收数据包
      • 解析数据包,并显示在控制台
      • 释放资源

2. 代码实现

(1)首先我们先写发送端的程序,如下:

 1 package com.himi.udpDemo;
 2
 3 import java.io.IOException;
 4 import java.net.DatagramPacket;
 5 import java.net.DatagramSocket;
 6 import java.net.InetAddress;
 7 import java.net.SocketException;
 8 import java.net.UnknownHostException;
 9
10 /**
11  *
12  * UDP协议发送数据:
13  * 1. 创建发送端的Socket对象
14  * 2. 创建数据,并把数据打包
15  * 3. 调用Socket对象的发送方法,发送数据包
16  * 4. 释放资源
17  *
18  */
19 public class UdpSendDemo {
20     public static void main(String[] args) throws IOException {
21         //创建发送端的Socket对象,这里使用的UDP使用的客户端的Socket对象类是DatagramSocket.
22         //DatagramSocket:DatagramSocket()
23         DatagramSocket ds = new DatagramSocket();
24
25         //创建数据,并把数据打包
26         //DatagramPacket:此类表示数据报包
27         /**DatagramPacket(byte[] buf, int length, InetAddress address, int port)
28         **         构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。
29         */
30         //创建数据
31         byte[] bytes = "风云雄霸天下,风云必胜. 风云合璧,摩柯无量. 圣心诀,玄武真功".getBytes();
32         //IP地址对象
33         InetAddress address = InetAddress.getByName("49.123.72.145");
34         //端口号
35         int port = 10086;
36         //数据打包
37         DatagramPacket dp = new DatagramPacket(bytes, bytes.length, address, port);
38
39
40         //调用Socket对象的发送方法,发送数据包
41         //public void send(DatagramPacket p)
42         ds.send(dp);
43
44
45         //释放资源
46         ds.close();
47
48     }
49
50 }

(2)其次实现的是接收端的代码,如下:

 1 package com.himi.udpDemo;
 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         //DatagramPacket(byte[] buf, int length)
28         byte[] bytes = new byte[1024];
29         int length  = bytes.length;
30
31         DatagramPacket dp = new DatagramPacket(bytes, length);
32
33         //调用Socket对象的接收方法,接收数据包
34         // public void receive(DatagramPacket p)
35         ds.receive(dp);//阻塞式方法
36
37         //解析数据包,并显示在控制台
38         //获取对方的IP
39         //public InetAddress getAddress()
40         InetAddress address = dp.getAddress();
41         String IP = address.getHostAddress();
42
43         //public byte[] getData():获取数据的缓冲区
44         //public int getLength():获取数据的实际长度
45         byte[] bys = dp.getData();
46         int len = dp.getLength();
47         String s = new String(bys,0,len);
48
49         System.out.println("发送端"+IP+"的数据:"+s);
50
51
52         //释放资源
53         ds.close();
54
55
56
57     }
58
59 }

(3)运行:

-->先运行接收端(类似于先开启服务器)

-->再运行发送端,这个时候,上面的接收端控制台,就会显示发送端发送过来的数据,效果如下:

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

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

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

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

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

    1. 数据来自于键盘录入 键盘录入数据要自己控制录入结束. 2. 代码实现: (1)发送端: 1 package com.himi.updDemo1; 2 3 import java.io.IOExc ...

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

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

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

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

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

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

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

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

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

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

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

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

  9. Java基础知识强化之集合框架笔记27:ArrayList集合练习之去除ArrayList集合中的重复字符串元素...

    1. 去除ArrayList集合中的重复字符串元素(字符串内容相同) 分析: (1)创建集合对象 (2)添加多个字符串元素(包含重复的) (3)创建新的集合 (4)遍历旧集合,获取得到每一个元素 (5 ...

最新文章

  1. 由谈退格键的实现来学习字符编码
  2. 用python pandas三行代码实现excel转csv
  3. 大众点评app 数据解密和反序列化
  4. 微信开发中,H5的video标签使用
  5. 树莓派3B+,我要跑.NET CORE
  6. response对象设置返回状态_postman 设置全局变量
  7. 三位bcd加法计数器_两个8位BCD编号的加法| 8085微处理器
  8. SaaS 不懂留存!别玩
  9. js中的cookie
  10. Spark 的 python 编程环境
  11. 【功能更新-1:选项统一】利用python生成自制英语试题程序开发
  12. 正则表达式(二)常用正则表达式——验证真实姓名
  13. 国外素材网站打不开?还想要同品质图片?
  14. 字节跳动8年经验,亲身经历教你如何从小白晋升月薪过万的测试工程师
  15. 文通互联网图片文字识别系统
  16. 10.22T2 DSU算法
  17. C语言求23阶行列式,AX=0通解,施密特正交化
  18. 解决RuntimeError: cuDNN error: CUDNN_STATUS_EXECUTION_FAILED 踩过的坑(配置环境:linux+anaconda3+pytorch ...)
  19. 计算机改考408的学校,2020考研 河北工业大学计算机改考408
  20. 外贸客户邮箱用什么?外贸哪个邮箱好?

热门文章

  1. HTML+CSS网页设计期末课程大作——体育拳击(5页)
  2. js中对字符串进行分割截取的方法
  3. 韩国食品医药品安全处:2017年韩国化妆品对中国大陆出口飙升23%
  4. 设计模式之桥接模式详解
  5. android 1 s,Android 2.1+TouchWiz 3.0_三星 I9088(Galaxy S)_手机Android频道-中关村在线
  6. 基于软件度量的测试体系建设
  7. 数百万人使用的 9 个 WiFi 路由器容易受到 226 个漏洞的影响
  8. 【2020】超100篇牛客网Java面经高频知识点汇总
  9. 机械动作时序图怎么画_时序图怎么画?
  10. 小米5s plus android8,小米加速小米5s/5s Plus机型安卓8.0适配