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如何下载网络文件到本地指定文件夹

《python如何下载网络文件到本地指定文件夹》这篇文章主要为大家详细介绍了python如何实现下载网络文件到本地指定文件夹,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下...  在python中下载文件到本地指定文件夹可以通过以下步骤实现,使用requests库处理HTTP请求,并结合o

Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例

《Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例》本文介绍Nginx+Keepalived实现Web集群高可用负载均衡的部署与测试,涵盖架构设计、环境配置、健康检查、... 目录前言一、架构设计二、环境准备三、案例部署配置 前端 Keepalived配置 前端 Nginx

Linux高并发场景下的网络参数调优实战指南

《Linux高并发场景下的网络参数调优实战指南》在高并发网络服务场景中,Linux内核的默认网络参数往往无法满足需求,导致性能瓶颈、连接超时甚至服务崩溃,本文基于真实案例分析,从参数解读、问题诊断到优... 目录一、问题背景:当并发连接遇上性能瓶颈1.1 案例环境1.2 初始参数分析二、深度诊断:连接状态与

Python 异步编程 asyncio简介及基本用法

《Python异步编程asyncio简介及基本用法》asyncio是Python的一个库,用于编写并发代码,使用协程、任务和Futures来处理I/O密集型和高延迟操作,本文给大家介绍Python... 目录1、asyncio是什么IO密集型任务特征2、怎么用1、基本用法2、关键字 async1、async

POI从入门到实战轻松完成EasyExcel使用及Excel导入导出功能

《POI从入门到实战轻松完成EasyExcel使用及Excel导入导出功能》ApachePOI是一个流行的Java库,用于处理MicrosoftOffice格式文件,提供丰富API来创建、读取和修改O... 目录前言:Apache POIEasyPoiEasyExcel一、EasyExcel1.1、核心特性

MySQL 复合查询案例详解

《MySQL复合查询案例详解》:本文主要介绍MySQL复合查询案例详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录基本查询回顾多表笛卡尔积子查询与where子查询多行子查询多列子查询子查询与from总结合并查询(不太重要)union基本查询回顾查询

Python中模块graphviz使用入门

《Python中模块graphviz使用入门》graphviz是一个用于创建和操作图形的Python库,本文主要介绍了Python中模块graphviz使用入门,具有一定的参考价值,感兴趣的可以了解一... 目录1.安装2. 基本用法2.1 输出图像格式2.2 图像style设置2.3 属性2.4 子图和聚

Java并发编程之如何优雅关闭钩子Shutdown Hook

《Java并发编程之如何优雅关闭钩子ShutdownHook》这篇文章主要为大家详细介绍了Java如何实现优雅关闭钩子ShutdownHook,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 目录关闭钩子简介关闭钩子应用场景数据库连接实战演示使用关闭钩子的注意事项开源框架中的关闭钩子机制1.

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

Java Stream流使用案例深入详解

《JavaStream流使用案例深入详解》:本文主要介绍JavaStream流使用案例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录前言1. Lambda1.1 语法1.2 没参数只有一条语句或者多条语句1.3 一个参数只有一条语句或者多