JAVA基础----网络通信之UDP通信 博客分类: JAVA基础 java编程UDP
程序员文章站
2024-03-12 10:34:38
...
java UDP通信的实现,代码如下
1、简单的通信
2、复杂的传输带类型的UDP通信
1、简单的通信
package com.out.udp; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; /** * 1、创建客户端+端口 * 2、准备数据 字节数组 * 3、给数据打包 并指定发送的目的地和端口 * 4、发送 * 5、释放 * * 思考 : 发送有类型的数据 怎么处理 如对象 数字 等等 */ public class MyUDPClient { public static void main(String[] args) throws IOException { //1.创建客户端+端口 DatagramSocket client = new DatagramSocket(8888); //2.准备要发送的数据 字节数组 String msg = "UDP编程"; byte[] data = msg.getBytes("utf-8"); //3.给数据打包 并指定发送的目的地和端口 DatagramPacket(byte buf[], int length, InetAddress address, int port) InetAddress address = InetAddress.getByName("127.0.0.1"); DatagramPacket packet = new DatagramPacket(data, data.length, address, 9999); //4.发送 client.send(packet); //5.释放 client.close(); } }
package com.out.udp; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; /** * 服务端 * 1、创建服务+端口 * 2、准备接受容器 byte数组 * 3、把接收容器封装成包 DatagramPacket * 4、接受数据 * 5、分析数据 */ public class MyUDPServer { public static void main(String[] args) throws IOException { //1.创建服务+端口 DatagramSocket server = new DatagramSocket(9999); //2.准备接受容器 byte[] container = new byte[1024]; //3.封装成包 DatagramPacket(byte buf[], int length) DatagramPacket packet = new DatagramPacket(container, container.length); //4.接受数据 (阻塞式接受) server.receive(packet); //5.分析数据 byte[] data = packet.getData(); System.out.println(new String(data, "utf-8")); //6.释放资源 server.close(); } }
2、复杂的传输带类型的UDP通信
package com.out.udp; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; /** * 字符串数据类型的通信 * 1、创建客户端+端口 * 2、准备数据 字节数组 * 3、给数据打包 并指定发送的目的地和端口 * 4、发送 * 5、释放 * * 思考 : 发送有类型的数据 怎么处理 如对象 数字 等等 * 1、创建客户端+端口 * 2、准备数据 把各种类型的数据转成--------》字节数组 *************************************** * 3、给数据打包 并指定发送的目的地和端口 * 4、发送 * 5、释放 */ public class SendDataTypeClient { public static void main(String[] args) throws IOException { //1.创建客户端+端口 DatagramSocket client = new DatagramSocket(8888); //2.准备要发送的数据 字节数组 double d = 123.23; byte[] data = convert(d); //3.给数据打包 并指定发送的目的地和端口 DatagramPacket(byte buf[], int length, InetAddress address, int port) InetAddress address = InetAddress.getByName("127.0.0.1"); DatagramPacket packet = new DatagramPacket(data, data.length, address, 9999); //4.发送 client.send(packet); //5.释放 client.close(); } /** * 字节数组 数据源 + Data输出流 * @param d * @return * @throws IOException */ public static byte[] convert(double d) throws IOException { byte[] data = null; //写入数据 ByteArrayOutputStream bos = new ByteArrayOutputStream(); DataOutputStream dos = new DataOutputStream(bos); dos.writeDouble(d); dos.flush(); //获取数据 data = bos.toByteArray(); dos.close(); return data; } }
package com.out.udp; import java.io.ByteArrayInputStream; import java.io.DataInputStream; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; /** * 服务端 * 1、创建服务+端口 * 2、准备接受容器 byte数组 * 3、把接收容器封装成包 DatagramPacket * 4、接受数据 * 5、分析数据 将字节数组转换成--------》各种类型数据 * 6、释放资源 */ public class ReceiveDataTypeServer { public static void main(String[] args) throws IOException { //1.创建服务+端口 DatagramSocket server = new DatagramSocket(9999); //2.准备接受容器 byte[] container = new byte[1024]; //3.封装成包 DatagramPacket(byte buf[], int length) DatagramPacket packet = new DatagramPacket(container, container.length); //4.接受数据 (阻塞式接受) server.receive(packet); //5.分析数据 double data = convert(packet.getData()); System.out.println(data); //6.释放资源 server.close(); } public static double convert(byte[] data) throws IOException { DataInputStream dis = new DataInputStream(new ByteArrayInputStream(data)); double num = dis.readDouble(); dis.close(); return num; } }
推荐阅读
-
JAVA基础----网络通信之UDP通信 博客分类: JAVA基础 java编程UDP
-
java图形界面基础之画图(使用Graphics类从画图形到图片到gif) 博客分类: java图形界面基础java图形界面基础,事件机制 javaGraphicsJFramegif
-
基于UDP的网络通信之屏幕共享(类似远程协助) 博客分类: Java网络
-
Java基础-网络编程(概述、网络模型、TCP和UDP)
-
使用 Netty 进行 UDP 网络编程 博客分类: java编程
-
java 面试整理一——基础知识 博客分类: javajava编程 java面试数据结构编程
-
java 面试整理一——基础知识 博客分类: javajava编程 java面试数据结构编程
-
java 基础知识之网络通信(TCP通信、UDP通信、多播以及NIO)总结
-
java 基础知识之网络通信(TCP通信、UDP通信、多播以及NIO)总结
-
Java网络编程基础篇之单向通信 原创