`

Java学习系列(十八)Java面向对象之基于UDP协议的网络通信

 
阅读更多

UDP协议:无需建立虚拟链路,协议是不可靠的。
A节点以DatagramSocket发送数据包,数据报携带数据,数据报上还有目的目地地址,大部分情况下,数据报可以抵达;但有些情况下,数据报可能会丢失 --丢失了也不管。

先了解2个类:
DatagramSocket:相当于“码头”,此类表示用来发送和接收数据报的套接字。
DatagramPacket:代表数据报。

举例说明1:
服务器端

 

public class SimpleUDPServer {
	final static int SERVER_PORT = 30000;
	final static int PACKET_SIZE = 4092;

	public static void main(String[] args) {
		DatagramSocket datagramSocket = null;
		DatagramPacket datagramPacket = null;
		try {
			while (true) {
				// 创建datagramSocket,准备用于发送和接收数据报
				datagramSocket = new DatagramSocket(SERVER_PORT);
				datagramPacket = new DatagramPacket(new byte[PACKET_SIZE],
						PACKET_SIZE);
				// 使用一个空的packet去装datagramSocket接收到的数据
				datagramSocket.receive(datagramPacket);
				// 将datagramPacket中接收到的字节数组转换为字符串,然后输出
				System.out.println(new String(datagramPacket.getData(), 0,
						datagramPacket.getLength()));
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

客户端:

public class SimpleUDPClient {
	final static int SERVER_PORT = 30000;

	public static void main(String[] args) {
		DatagramSocket datagramSocket = null;
		DatagramPacket datagramPacket = null;
		try {
			// 创建datagramSocket,准备用于发送和接收数据报
			// datagramSocket使用动态端口(以便选择一个空闲的端口)
			datagramSocket = new DatagramSocket();
			String content = "Java学习系列(十八)Java面向对象之基于UDP协议的网络通信";

			// 创建一个有数据、有目的地址的datagramPacket
			datagramPacket = new DatagramPacket(content.getBytes(), content
					.getBytes().length, InetAddress.getByAddress(new byte[] {
					(byte) 192, (byte) 168, 0, 8 }), SERVER_PORT);
			// 发送数据报
			datagramSocket.send(datagramPacket);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

MulticastSocket将数据报发送到“广播地址”,数据报会被自动“广播”到所有加入该IP地址的客户端。
TTL是控制数据可以跨过多少个网段。
--当ttl为0时,说明该数据报只能停留在本机;
--当ttl为1时,说明数据报只能停留在当前局域网。
--当ttl为32时,说明数据报只能停留在本站点的网络。
--当ttl为64时,说明数据报只能停留在本地区。
--当ttl为128时,说明数据报只能停留在本大洲(如亚洲)。
--当ttl为255时,说明数据报达到全球。

 

分享到:
评论

相关推荐

    基于UDP协议的Socket编程

    总的来说,基于UDP协议的Socket编程利用`DatagramPacket`和`DatagramSocket`类,能够在Java中实现高效且无连接的网络通信。这种通信方式适用于对延迟敏感、不需要数据顺序保证的场景,但也意味着开发者需要自行处理...

    基于UDP和TCP协议的Socket(网络编程/套接字)案例

    在Java中,Socket提供了一种标准的方式来实现基于TCP(传输控制协议)和UDP(用户数据报协议)的网络通信。这两种协议在互联网通信中扮演着核心角色。 TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。...

    面向对象的网络协议面向对象的网络协议

    面向对象的网络协议是一种设计和实现网络通信的高级方法,它将传统的网络协议设计思想与面向对象编程的理念相结合。在传统的网络协议设计中,通常采用过程化的方式,将协议视为一系列独立的功能模块,通过函数调用来...

    java小程序 基于UDP协议的会话小练习

    Java小程序基于UDP协议的会话小练习主要涉及的是网络编程中的用户数据报协议(User Datagram Protocol,UDP)。...通过这样的小练习,你可以深入理解UDP协议的工作原理,以及如何在Java中实现基于UDP的网络通信。

    面向对象的Java网络编程

    面向对象的Java网络编程主要涉及如何使用Java API来实现网络通信,包括TCP/IP套接字、UDP套接字、HTTP协议以及NIO(非阻塞I/O)等技术。下面将详细介绍这些知识点。 1. **TCP/IP套接字**:Java提供了java.net....

    Java基础教程完整版

    Java学习系列(十六):Java面向对象之基于TCP协议的网络通信 本章节主要讲解Java的网络编程,包括基于TCP协议的网络通信、Socket类、ServerSocket类等。 Java学习系列(十七):Java面向对象之开发聊天工具 本...

    用Java实现基于TCPIP协议的网络通信程序

    ### 用Java实现基于TCP/IP协议的网络通信程序 #### 概述 随着互联网技术的快速发展,现代程序设计越来越依赖于网络通信能力。Java作为一种广泛使用的编程语言,提供了丰富的API来支持网络编程,使得开发者无需深入...

    JAVA TCP和UDP Socket通信框架

    Java中的TCP和UDP Socket通信是网络编程...使用这样的框架,开发者可以专注于业务逻辑,而无需关心底层网络通信的细节,提高了开发效率。对于初学者,通过研究这个框架,也能深入理解TCP和UDP Socket通信的原理和实践。

    基于java netty的udp客户端声呐数据对接

    Java Netty是一个高性能、异步事件驱动的网络应用程序框架,常用于开发高效的网络服务,包括TCP、UDP等网络协议的应用。在"基于Java Netty的UDP客户端声呐数据对接"项目中,我们主要关注如何利用Netty处理UDP通信,...

    基于UDP通信的联机对战,基于JAVAGUI,适合java初学者练习的一款小游戏.zip

    标题中的“基于UDP通信的联机对战,基于JAVAGUI”揭示了这款小游戏的两个核心技术点:UDP网络编程和Java图形用户界面(GUI)设计。下面将详细讲解这两个方面。 首先,UDP(User Datagram Protocol)是互联网协议簇...

    第13章-Java网络编程-Java面向对象程序设计教程-微课视频版-程杰-清华大学出版社.pptx

    Java网络编程是Java面向对象程序设计的一个重要领域,主要涉及如何利用Java API进行网络通信。在本章中,我们将深入探讨TCP/IP协议的基础知识以及Java中实现网络通信的关键工具类。 首先,TCP/IP协议是互联网通信的...

    java实现TCP+UDP通信

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

    面向对象的网络协议,对于想要了解网络编程的人是一本红宝书啊

    通过学习和实践面向对象的网络协议,开发者不仅可以深入理解网络通信的原理,还能掌握如何用现代化的编程技术构建高效、可靠的网络应用。无论是初学者还是经验丰富的开发者,这都是一本值得珍藏的“红宝书”。

    Java面向对象程序设计教程PDF,完整的面向对象编程指南,大量习题便于自学。

    Java面向对象程序设计是Java语言的核心特性之一,也是学习Java编程不可或缺的部分。本教程全面深入地探讨了这一主题,旨在帮助初学者和有一定基础的开发者更深入地理解面向对象编程的概念和实践。以下是对该教程内容...

    Java中实现UDP协议编程的方法

    ### Java中实现UDP协议编程的方法 #### UDP协议简介 UDP(User Datagram Protocol)即用户数据报协议,是在网络中与TCP协议并列的一种用于处理数据包的协议。它位于OSI七层模型中的第四层——传输层,紧接在IP协议...

    基于java的网络五子棋 毕业设计

    总的来说,基于Java的网络五子棋毕业设计涵盖了广泛的计算机科学和技术,从基本的编程语言特性到高级的网络通信和多线程,再到用户界面设计和游戏逻辑实现,为学生提供了一个综合性的实践平台,锻炼其解决问题和项目...

    基于UDP的JAVA网络编程

    ### 基于UDP的Java网络编程 #### 核心技术与实现 本文档将详细介绍在Java中利用UDP协议进行网络编程的核心技术和实践方法。UDP(User Datagram Protocol)是一种无连接的数据报协议,在数据传输方面提供了不同于...

    基于UDP的,BUTP协议详解

    ### 基于UDP的BUTP协议详解 #### 概述 随着互联网技术的快速发展,数据传输成为了网络应用的核心。TCP(传输控制协议)作为可靠的面向连接的协议,在大多数场景下表现出色,但在特定环境下(如双端局域网环境)...

    Java实现基于TCPIP协议的网络通信程序

    ### Java实现基于TCP/IP协议的网络通信程序 随着互联网技术的迅速发展,现代软件开发越来越多地涉及到了网络通信。在众多编程语言中,Java凭借其跨平台性、丰富的类库支持,尤其是对于网络编程的强大支持,成为了...

    JAVA编写网络通信程序

    - Java是完全基于面向对象编程(OOP)的。它支持封装、继承和多态等核心概念。通过类和对象的概念,开发者可以更好地组织代码,提高代码的可维护性和可重用性。 **3.3 多线程** - Java支持内置的多线程机制,使得...

Global site tag (gtag.js) - Google Analytics