UTP网络编程入门案例

2024-01-17 14:50
文章标签 入门 编程 网络 案例 utp

本文主要是介绍UTP网络编程入门案例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

说明:UTP是面向无连接的,不可靠的协议,即传输数据时不会确定对方是否在线,优点是效率高。

DatagramSocket & DatagramPacket

DatagramSocket是使用UDP协议的Socket,它的作用是接收和发送数据包;

DatagramPacket是DatagramSocket发送和接收的数据包对象,两者需配合使用

DatagramSocket 方法

DatagramSocket():无参构造方法;

DatagramSocket(int port):带端口号的构造方法;

send(DatagramPacket p):发送一个数据包

receive(DatagramPacket p):接收一个数据包

close():关闭通道

DatagramPacket 方法

DatagramPacket(byte buf[], int length,InetAddress address, int port):指定一个字节数组,长度,IP地址和端口号的数据包

DatagramPacket(byte buf[], int length):指定一个字节数组和长度的数据包

入门案例

客户端:发送指定IP和端口的数据包;

如果不发给本机,IP地址应该设置为接收方的IP,当然双方应该是能Ping通的,否则接收不到

import java.io.IOException;
import java.net.*;public class EssayClient {public static void main(String[] args) throws IOException {// 创建客户端的DatagramSocket对象DatagramSocket dgs = new DatagramSocket();// 发送Hellobyte[] data = "Hello!".getBytes();// 获取本地的InetAddress对象InetAddress localhost = InetAddress.getByName("192.168.13.28");// 将要发送的数据,IP信息,端口号封装成一个数据包DatagramPacket dgp = new DatagramPacket(data, data.length, localhost, 10000);// 发送数据dgs.send(dgp);// 关闭通道dgs.close();}
}

服务端:指定IP和端口,接收数据包

需要注意的是,这里的端口需要和客户端那边设置的数据包端口号一致,否则也接收不到

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;public class EssayServer {public static void main(String[] args) throws IOException {// 创建接收端的DatagramSocket对象,指定端口号DatagramSocket dgs = new DatagramSocket(10000);// 创建一个接收数据的字节数组byte[] data = new byte[1024];// 创建一个数据包,数据包大小为1KDatagramPacket dgp = new DatagramPacket(data, data.length);// 接收数据包dgs.receive(dgp);// 获取接收到的数据包信息byte[] dataByteArray = dgp.getData();// 获取接收到的数据包字节长度int length = dgp.getLength();// 将信息转为字符串String message = new String(dataByteArray, 0, length);// 关闭通道dgs.close();System.out.println("message = " + message);}
}

在这里插入图片描述

另外,启动程序时需要先启动服务端,再启动客户端;还需要注意的是,客户端如果没有接收到数据包会一直阻塞,下图是我更改了服务端的端口号后运行的结果
在这里插入图片描述

这篇关于UTP网络编程入门案例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/616386

相关文章

Python实现Word转PDF全攻略(从入门到实战)

《Python实现Word转PDF全攻略(从入门到实战)》在数字化办公场景中,Word文档的跨平台兼容性始终是个难题,而PDF格式凭借所见即所得的特性,已成为文档分发和归档的标准格式,下面小编就来和大... 目录一、为什么需要python处理Word转PDF?二、主流转换方案对比三、五套实战方案详解方案1:

C# async await 异步编程实现机制详解

《C#asyncawait异步编程实现机制详解》async/await是C#5.0引入的语法糖,它基于**状态机(StateMachine)**模式实现,将异步方法转换为编译器生成的状态机类,本... 目录一、async/await 异步编程实现机制1.1 核心概念1.2 编译器转换过程1.3 关键组件解析

setsid 命令工作原理和使用案例介绍

《setsid命令工作原理和使用案例介绍》setsid命令在Linux中创建独立会话,使进程脱离终端运行,适用于守护进程和后台任务,通过重定向输出和确保权限,可有效管理长时间运行的进程,本文给大家介... 目录setsid 命令介绍和使用案例基本介绍基本语法主要特点命令参数使用案例1. 在后台运行命令2.

Spring WebClient从入门到精通

《SpringWebClient从入门到精通》本文详解SpringWebClient非阻塞响应式特性及优势,涵盖核心API、实战应用与性能优化,对比RestTemplate,为微服务通信提供高效解决... 目录一、WebClient 概述1.1 为什么选择 WebClient?1.2 WebClient 与

RabbitMQ消费端单线程与多线程案例讲解

《RabbitMQ消费端单线程与多线程案例讲解》文章解析RabbitMQ消费端单线程与多线程处理机制,说明concurrency控制消费者数量,max-concurrency控制最大线程数,prefe... 目录 一、基础概念详细解释:举个例子:✅ 单消费者 + 单线程消费❌ 单消费者 + 多线程消费❌ 多

Spring Boot 与微服务入门实战详细总结

《SpringBoot与微服务入门实战详细总结》本文讲解SpringBoot框架的核心特性如快速构建、自动配置、零XML与微服务架构的定义、演进及优缺点,涵盖开发环境准备和HelloWorld实战... 目录一、Spring Boot 核心概述二、微服务架构详解1. 微服务的定义与演进2. 微服务的优缺点三

从入门到精通详解LangChain加载HTML内容的全攻略

《从入门到精通详解LangChain加载HTML内容的全攻略》这篇文章主要为大家详细介绍了如何用LangChain优雅地处理HTML内容,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录引言:当大语言模型遇见html一、HTML加载器为什么需要专门的HTML加载器核心加载器对比表二

从入门到进阶讲解Python自动化Playwright实战指南

《从入门到进阶讲解Python自动化Playwright实战指南》Playwright是针对Python语言的纯自动化工具,它可以通过单个API自动执行Chromium,Firefox和WebKit... 目录Playwright 简介核心优势安装步骤观点与案例结合Playwright 核心功能从零开始学习

MySql基本查询之表的增删查改+聚合函数案例详解

《MySql基本查询之表的增删查改+聚合函数案例详解》本文详解SQL的CURD操作INSERT用于数据插入(单行/多行及冲突处理),SELECT实现数据检索(列选择、条件过滤、排序分页),UPDATE... 目录一、Create1.1 单行数据 + 全列插入1.2 多行数据 + 指定列插入1.3 插入否则更

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数