当前位置: 首页 > news >正文

java网络编程udp_Java网络编程之UDP

UDP是User Datagram Protocol的简称,中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联)参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。

UDP的特征:

不需要建立连接,将数据及相关的地址都封装到数据包中

每个数据包的大小限制在64k

不需要建立连接,所以效率比较高,正因为不需要连接所以是不可靠协议

Socket

Socket就是为网络服务提供的一种机制

通信的两端都有Socket

网络通讯其实就是Socket通信

数据在两个Socket间进行传输

Java中使用UDP的步骤

发送端

建立UDP的socket服务

封装数据包(指明接收端的IP地址,和接收端的端口号)

通过socket的Send()发送数据

关闭服务

接收端

创建socket服务(需要指明监视的端口号,并且要和发送端指定的接受端口的端口号一致)

定义数据包用于接收数据(构建DatagramPacket packet用于接收数据)

通过socket的Receiver()接受数据

通过packet提供的相应方法获取发送端发送的信息

关闭服务

代码案例如下

发送端

package cc.enfp.socket.udp;

import java.io.IOException;

import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.InetAddress;

import java.net.SocketException;

import java.net.UnknownHostException;

/*

* UDP 发送端程序

*/

public class SendTest

{

public static void main(String[] args) throws IOException

{

/*

* 1、创建socket服务

*/

DatagramSocket socket = new DatagramSocket();

/*

* 2、提供相应的发送=信息

*/

byte[] data = "开启udp之旅".getBytes();

//指明接收端的IP地址,和接收端的端口号

DatagramPacket packet = new DatagramPacket(data, data.length,

InetAddress.getLocalHost(), 10000);

/*

* 3、使用socket的发送方法,进行数据的发送

*/

socket.send(packet);

/*

* 4、关闭连接,释放资源

*/

socket.close();

}

}

接收端

package cc.enfp.socket.udp;

import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.InetAddress;

import java.net.SocketException;

/*

* UDP 接收端

*/

public class ReceiveTest

{

public static void main(String[] args) throws Exception

{

/*

* 1、创建socket服务

* 需要指明监视的端口号,并且要和发送端指定的接受端口的端口号一致

*/

DatagramSocket socket = new DatagramSocket(10000);

/*

* 2、构建DatagramPacket packet用于接收数据

* packet只是为了接受数据,所以只需要指明字节数组和长度就可以

*/

byte[] data = new byte[1024];

DatagramPacket packet = new DatagramPacket(data, data.length);

/*

* 3、通过socket的receive方法将数据封装到packet中

*/

socket.receive(packet);//该方法是阻塞

/*

* 4、通过packet提供的相应方法获取发送端发送的信息

*/

InetAddress ip = packet.getAddress();

System.out.println("发送端的IP: "+ip.getHostAddress());

//使用String的重载将返回的byte[]类型的内容转换成字符串

String content = new String(packet.getData(), 0, packet.getLength());

System.out.println("发送端发送的内容为: "+content);

/*

* 5.关闭连接,释放资源

*/

socket.close();

}

}


http://www.taodudu.cc/news/show-647767.html

相关文章:

  • 【physx/wasm】在physx中添加自定义接口并重新编译wasm
  • excel---常用操作
  • Lora训练Windows[笔记]
  • linux基础指令讲解(ls、pwd、cd、touch、mkdir)
  • InnoDB 事务处理机制
  • 启明云端ESP32 C3 模组WT32C3通过 MQTT 连接 AWS
  • java 非递归求二叉树高度_非递归算法实现二叉树高度
  • excel xml mysql_数据库表转换为xml格式,excel转换为xml格式文件
  • java转json jar包_java转换json需导入的jar包说明
  • java arrays方法_Java工具类Arrays中不得不知的常用方法
  • java for 死循环_简单的java死循环 java中的死循环问题
  • java toolkit invoker_有没有哪位老哥愿意帮一下新人啊
  • java 枚举 下拉框_枚举enum在velocity模板语言中的应用-下拉菜单
  • mywebsql java版_MyWebSQL|MySQL数据库管理软件(MyWebSQL)下载v3.7官方版 - 欧普软件下载...
  • java打包后发布找不到jsp_eclipse中web项目部署以后jsp的java文件找不到问题(Tomcat配置serverlocations)...
  • java 队列的数组_JAVA-循环数组实现简单的队列
  • java 字节取位_java位 、字节 、字符的梳理
  • jemalloc java_从源构建tensorflow遇到错误:规则'@jemalloc//:jemalloc'的C编译失败
  • laravel 调试mysql_Laravel - MySQL数据库的使用详解3(Query Builder用法2:新增、修改、删除)...
  • php mysql.x86 64_centos7.2yum安装php70w.x86_64
  • java jbutton 禁用_java – 如何禁用JButton在禁用时变灰?
  • java论文翻译_Java技术(外文文献翻译)
  • java后台接收数据格式_Java后台基于POST获取JSON格式数据
  • aes c# java_AES加密,C#和java相同
  • java原生封装_[Java教程]原生AJAX封装
  • java max sum_杭电1024 Max Sum Plus Plus状压dp(java)
  • java主线程控制子线程_CountDownLatch控制主线程等子线程执行完--Java多线程
  • mysql数据库事件不执行_如何查看mysql事件是否执行
  • 我的世界1.7.10java下载安装_我的世界1.7.10正式版
  • java编写单词数_JAVA flink小试——单词计数
  • bbs mysql_简单BBS程序(需MySQL支持)
  • java oom分析_OOM分析
  • anaconda怎么使用python包_Anaconda中python包的介绍与使用方法
  • php抓取运动步数,使用PHP抓取微博数据
  • php 网页截屏,怎么用PHP实现网页截图
  • thread php,php中关于线程thread的使用