`
无量
  • 浏览: 1146207 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

JAVA基础----网络通信之UDP通信

阅读更多
java 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-Oracle-UDP通信

    Java-Oracle-UDP通信是一种基于无连接的网络通信方式,主要应用于实时数据传输或需要高效传输少量数据的场景。在Java编程中,我们通常使用`java.net`包中的`DatagramSocket`类来处理UDP通信,而在Oracle数据库环境中...

    java-tcp-udp编程

    文件"java udp 简单实现 - - ITeye技术网站.mht"可能包含的是一个简单的Java UDP通信示例,涵盖了如何创建`DatagramSocket`,发送和接收数据报文的基本操作。理解这些基本操作对于初学者至关重要。 文件"(转)使用...

    北大Java--网络通信

    【网络通信基础】 网络通信是计算机科学中的重要组成部分,尤其在Java编程中占有核心地位。在本篇内容中,我们将探讨网络通信的基本概念以及Java如何与Internet交互。 首先,TCP/IP是Internet的主要通信协议,它...

    UDP通信(JAVA)

    UDP通信在Java编程中是一种常见的网络通信方式,它基于用户数据报协议(User Datagram Protocol),是一种无连接的、不可靠的传输协议。本项目提供的`Kehu.java`和`UDPServer.java`两个文件分别代表了UDP通信中的...

    UDP通信Java UDP通信

    Java实现UDP通信,按照固定的帧格式发送数据和接收数据,对数据的格式解码处理。实现了显示同设备的不同工作模式的显示。发送不同的命令数据帧。 Java实现UDP通信,按照固定的帧格式发送数据和接收数据,对数据的...

    java网络编程之UDP协议通信

    Java网络编程中的UDP...通过这个项目,你可以深入理解Java网络编程中的UDP通信,了解如何使用Socket API创建UDP客户端和服务器,并实践如何结合GUI进行交互式通信。这不仅有助于理论学习,也提供了实际操作的经验。

    java-UDP-programming.zip_java programming

    Java UDP编程是网络通信中的一个重要领域,它基于用户数据报协议(User Datagram Protocol),与TCP(传输控制协议)相比,UDP提供了一种无连接、不可靠的数据传输方式。本资源包含了一个详细的Java UDP程序设计实例...

    java语言UDP通信

    在Java中,我们通过`java.net`包中的`DatagramSocket`类来实现UDP通信。 **UDP客户端(UDPClient.java)** UDP客户端通常负责发送数据到服务器。首先,创建一个`DatagramSocket`实例,这允许客户端发送和接收数据...

    JAVA TCP和UDP Socket通信框架

    UDP通信则使用`java.net.DatagramSocket`和`java.net.DatagramPacket`类。`DatagramSocket`用于发送和接收数据报,`DatagramPacket`封装了数据和目标/源地址信息。UDP不保证数据包的顺序和到达,因此适合对实时性...

    Java实现udp通信协议

    以上就是关于“Java实现UDP通信协议”的关键知识点。理解并掌握这些内容,可以帮助开发者实现高效的UDP通信应用,并能处理相关的数据转换、日志记录和异常情况。通过实际项目练习,可以加深对这些概念的理解,并提升...

    大学课程讲义-Java基础-网络编程.pptx

    基于TCP的Socket通信是指两个Java应用程序可通过一个双向的网络通信连接实现数据交换,这个双向链路的一段称为一个Socket(套接字)。Socket通常用来实现Client/Server连接。Java语言的基于套接字编程分为服务器编程...

    UDP聊天&文件发送.rar_JAVA socket编程_java_java udp_java udp通信_套接字通信

    综上所述,"UDP聊天&文件发送.rar"项目涵盖了Java UDP套接字编程的多个方面,包括基础通信、多用户聊天、文件传输和GUI集成,这些都是Java网络编程中的重要概念和技术。通过此项目,开发者可以深入理解如何在实际...

    java udp socket 网络编程

    Java UDP套接字网络编程是Java编程领域中的一个重要部分,主要涉及如何利用Java的Socket类库来实现基于用户数据报协议(User Datagram Protocol)的通信。UDP是一种无连接的、不可靠的传输协议,适用于对实时性要求...

    java实现的tcpudp通信

    Java 作为一种广泛应用的编程语言,提供了丰富的网络编程接口,使得开发者能够轻松地实现基于 TCP 和 UDP 的通信。本次实验旨在通过实践操作,帮助学生深入理解 TCP 和 UDP 的工作原理,并掌握使用 Java 进行网络...

    java-udp.rar_UDP Java_UDP java socket_java socket _java socket

    Java UDP(用户数据报协议)是网络编程中的一个重要部分,特别是在构建实时通信或者对低延迟有较高需求的应用中。在Java中,UDP通信主要通过`...理解这些基础概念后,你可以根据项目需求进一步扩展和优化UDP通信代码。

    TCPSocket 和UDP通信java聊天室源文件

    总之,通过分析和实践这个"TCPSocket 和UDP通信java聊天室源文件",开发者可以深入理解TCP和UDP的区别,掌握Java Socket编程的基础,并了解如何在实际应用中构建聊天室系统。这对于提升网络编程能力、理解和解决实际...

    用JAVA进行TCP-IP-UDP多播网络应用程序编制(英文版).pdf

    在Java中,我们使用`java.net.DatagramSocket`和`java.net.DatagramPacket`来处理UDP通信。`DatagramSocket`用于发送和接收数据报,`DatagramPacket`封装了要发送的数据和目标地址。 UDP通信的基本流程: 1. 创建`...

    java实现TCP+UDP通信

    在IT行业中,网络通信是至关重要的一个领域,Java作为一门广泛应用的编程语言,提供了丰富的API来支持TCP(传输控制协议)和UDP(用户数据报协议)这两种不同的网络通信方式。本篇文章将深入探讨如何使用Java实现TCP...

    Java基础-day14每日作业卷1

    【Java基础-day14每日作业卷1】涵盖了Java网络编程中的基本概念,主要涉及IP地址、端口号、InetAddress类、UDP和TCP协议以及相关的数据包处理类。以下是这些知识点的详细说明: 1. **IP地址**:Internet Protocol ...

    Java的UDP通信程序

    Java的UDP通信程序是基于用户数据报协议(User Datagram Protocol)进行网络通信的一种方式。UDP是一种无连接的、不可靠的传输层协议,它比TCP更轻量级,适合于实时性要求高或者数据丢失可以接受的应用场景。在这个...

Global site tag (gtag.js) - Google Analytics