目录

前言

一、udp是什么?

二、使用步骤

1.UDP接收工具类

2.UDP发送工具类

3.UDP发送接收调用示例

总结


前言

工作中遇到UDP数据的接收与发送工具类,记录下以便后续有需要使用。


一、udp是什么?

UDP是一个无连接协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。

由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等,因此一台服务机可同时向多个客户机传输相同的消息。注意:UDP协议是不可靠的。

二、使用步骤

1.UDP接收工具类

代码如下:

package com.datafactory.utils;import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;/*** udp接受工具类*/
public class UDPRev {private DatagramSocket server;private DatagramPacket packet;private byte[] b;/*** @Description 构造接收udp的同时设置接收端口号* @param: revPort* @return null* @throws**/public UDPRev(int revPort){super();try {this.server = new DatagramSocket(revPort);} catch (SocketException e) {e.printStackTrace();}System.out.println("UDP接收已启动,正在监听端口"+revPort);}//持续接收udp端口发送过来的数据public byte[] receiveData(){b = new byte[1024];int len=0;packet = new DatagramPacket(b,b.length);try {server.receive(packet);} catch (IOException e) {e.printStackTrace();}return packet.getData();}
}

2.UDP发送工具类

代码如下:

package com.datafactory.utils;import java.net.*;/*** udp发送工具类 每次发送都需要重新创建一个发送udp的对象*/
public class UDPSend {/*** 发送端口*/private int sendPort;/*** 发送ip*/private String sendIP;/*** 发送使用的客户端对象**/private DatagramSocket client;//创建发送端Socket对象public UDPSend(int sendPort,String sendIP){super();this.sendPort = sendPort;this.sendIP = sendIP;try {client = new DatagramSocket(sendPort);} catch (SocketException e) {e.printStackTrace();}System.out.println("UDP发送端已启动,发送端口:"+sendPort+",发送ip:"+sendIP);}//发送数据包public void send(byte[] sendMessage){//创建数据并打包int length = sendMessage.length;try {InetAddress ip = InetAddress.getByName(sendIP);//根据自己主机的ip地址或者主机名DatagramPacket dp = new DatagramPacket(sendMessage,length,ip,sendPort);//发送数据client.send(dp);}catch (Exception e){e.printStackTrace();}}}

3.UDP发送接收调用示例

持续接收UDP数据代码如下:

UDPRev udpRev = new UDPRev(6000);
while(true){//接受udp数据byte[] udpData = udpRev.receiveData();//将接收到的数据做处理}

发送UDP数据代码如下:

byte[] udpData = new String("123456").getBytes();
UDPSend udpSend = new UDPSend(6001,"192.168.0.1");
udpSend.send(udpData);

总结

UDP的接收需要持续不断的接收,每个接收端口都需要重新创建一个接收UDP工具类对象对数据进行接收,不可以重复使用对象。

UDP发送时也一样,发送到不同的端口时需要创建新的发送工具类对象。

UDP读取发送工具类相关推荐

  1. C#实现的UDP收发请求工具类实例

    本文实例讲述了C#实现的UDP收发请求工具类.分享给大家供大家参考,具体如下: 初始化: ListeningPort = int.Parse(ConfigurationManager.AppSetti ...

  2. 封装一个邮件发送工具类,一个字,巴适

    系列文章目录 文章目录 系列文章目录 前言 一. 介绍 二.二话不说开始干 1.引入库 2. 邮件发送实体(Mail) 3. 邮件发送类型枚举(MailType ) 4.邮件发送抽象类(Abstrac ...

  3. Java 基于mail.jar 和 activation.jar 封装的邮件发送工具类

    准备工作 发送邮件需要获得协议和支持! 开启服务 POP3/SMTP 服务 如何开启 POP3/SMTP 服务:https://blog.csdn.net/weixin_44953227/articl ...

  4. 【阿里云】短信服务 无认证 测试版本 附带短信发送工具类

    一.注册阿里云账号并登录阿里云(阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台) 二.找到云短信服务 直接搜索短信,并进入到短信控制台 三.正文 1.绑定测试手机号 测试版存在限制 发送手机 ...

  5. Java基于POI读取Excel工具类

    为什么为封装此工具类? 由于公司供应链部门业务需要,对Excel处理这块有较为严苛的要求.为了提高开发效率,从实际项目出发封装了通用自定义读取Excel工具类. 功能概述 支持读取全部excel数据 ...

  6. ali短信发送工具类

    阿里接口请求发送工具类 使用hutools工具 String host = "https://gyytz.market.alicloudapi.com";String path = ...

  7. java邮箱发送工具类

    如何编写邮箱发送功能模块 1.主要编写了邮箱发送工具类,里面每行代码有详细注释,直接复制修改个人邮箱信息就能进行测试,希望对大家有用. 1.主要编写了邮箱发送工具类,里面每行代码有详细注释,直接复制修 ...

  8. java企业微信消息发送工具类

    java企业微信消息发送工具类 用途 基于java实现调用企业微信发送消息,文件,图片. 实现效果 文件列表 文件名 用途 WechatUtil.java 企业微信工具类 WechatTest.jav ...

  9. 邮箱验证码发送工具类(秒发)

    如题,不做过多介绍,直接上代码 package util;import javax.mail.Session; import javax.mail.Transport; import javax.ma ...

  10. JAVA 邮件发送工具类

    1.封装邮件接收地址MODEL和邮件信息MODEL package com.sicdt.jnzxgzc.common.mail.model;import java.io.Serializable; / ...

最新文章

  1. linux下重命名脚本推荐
  2. this super 在接口以及实现类中所指的对象
  3. Quartz源码总结
  4. JUC队列-ArrayBlockingQueue(一)
  5. python 混淆矩阵_新手常见的5个Python错误
  6. solr学习笔记-增加mmesg4J中文分词
  7. VC++6遇到的问题(持续更新)
  8. 冒泡排序(bubble sort)算法实现
  9. 雅虎再掀高管离职潮 博客列三大原因
  10. html仿QQ资料卡,JS实现的模仿QQ头像资料卡显示与隐藏效果
  11. Unity 组合键输入及容易忽略的问题
  12. 企业微信之发送应用消息案例
  13. 美团人的写作基本功是如何练成的
  14. 勾股定理计算机语言,勾股定理
  15. 【Nginx】01-什么是Nginx?Nginx技术的功能及其特性介绍
  16. 【Axure高保真原型】日期时间选择器
  17. sas9.2智能平台连接oracle数据库操作说明文档,SAS9.2 SID更新
  18. php 分页怎么实现的_php如何实现分页
  19. Python | 爬虫 | selenium自动化测试 | b站点触验证码登录
  20. PS 自定义面板 工作区

热门文章

  1. CSS font-family常见中文字体对应的英文名称
  2. java eclipse计算器_用eclipse制作计算器。
  3. 国产开源数据可视化套件Cboard使用
  4. c语言细胞自动机,关于细胞自动机的程序..求救!!谢谢!
  5. 【IDEA】解决: alt+/快捷键 冲突的问题
  6. 华为密盒M310最新固件-精简美化版
  7. arduino秒退解决方法
  8. Mac的反编译工具一:otool (objdump工具的OSX对应工具)。
  9. python导入鸢尾花数据集_python 鸢尾花数据集报表展示
  10. AutoJs学习-几个QQ群脚本(群引流\提取成员\加群友\加群)