UTP网络编程入门案例

news2024/11/24 13:35:15

说明: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();

        // 发送Hello
        byte[] 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];

        // 创建一个数据包,数据包大小为1K
        DatagramPacket 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);
    }
}

在这里插入图片描述

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/558926.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数字信号处理6

昨天简单的复习了一下离散时间信号是什么以及系统的概念、系统要做的工作和系统中几个简单的原件,今天跟着昨天的内容继续学习。 一、离散时间系统的分类: 为什么要对系统进行分类呢,这就像是我们对函数进行分类一样,有些函数有…

提供免费样机模板素材的好网站推荐

说到原型样机模板,设计师当然并不陌生,因为经常在设计师完成作品后,为了更好地展示作品,通常将设计作品应用于真正的原型样机模板,可以快速在现实场景中展示设计作品,选择好的原型样机模板,操作…

超低功耗SUB 1G无线收发芯片+32位 Soc芯片UM2080F32 无线集抄/测温/养老院人员定位

UM2080F32是一款超低功耗 32 位 IoTP:ARMCortex-M0,64KB Flash,16KB SRAM,Sub-1GHz 射频收发器。工作于200MHz~960MHz 范围内。 UM2080F32 内部还集成了 CAN、12 位 SAR ADC、UART、SPI、QSPI、I2C 等通用外围通讯接口&#xff0c…

网络管理。

简介 网络接口名称规则 ls /etc/sysconfig/network-scripts/ -a NetworkManager服务 网络管理器是一个动态网络的控制器与配置系统,它用于当网络设备可用时保持设备和连接开启并激活默认情况下,CentOs/RHEL 7已安装网络管理器,并处于启用状态…

【Java this关键字】如何使用以及注意点 访问成员变量,访问成员方法,构造方法内调用构造方法

欢迎收看本篇文章 介绍 Java this 关键字的使用以及某些注意点 欢迎oomsday点踩,欢迎其他人点赞 😋 Java this关键字 ⭐ this 关键字的作用⭐ this 注意点⭐ this 用法访问成员变量访问成员方法在构造方法内调用构造方法 ⭐ this 关键字的作用 在 Java …

C10K-C10M进阶(高并发的真正理解)

1、一台计算机可以连接的TCP受什么限制? 能打开文件描述符的限制。默认是1024,可以修改。 端口号的限制,65535,因为TCP头部16位的端口号,其中1024以上可以用。如果是客户端,最多可以打开6万多的文件。如果是…

车载测试之车联网OTA安全实践

在SDV的大趋势下,汽车零部件智能化水平不断提高,车辆内部搭载的软件也越来越多。毫无疑问,车辆复杂度的提高必将带来维护上的困难,车企要如何面对更新迭代速度越来越快的软件、固件系统?OTA(over the air&a…

论文笔记: Trajectory Clustering: A Partition-and-Group Framework

07 Sigmoid 使用类DBSCAN的思路对轨迹聚类 1 intro 1.1 轨迹聚类 现有的轨迹聚类算法是将相似的轨迹作为一个整体进行聚类,从而发现共同的轨迹。 但是这样容易错过一些共同的子轨迹(sub-trajectories)。而在实际中,当我们对特…

运行 100 万个并发任务需要多少内存?

在这篇博文中,我深入研究了 Rust、Go、Java、C#、Python、Node.js 和 Elixir 等流行语言在异步和多线程编程之间的内存消耗比较。 前段时间,我不得不比较一些旨在处理大量网络连接的计算机程序的性能。我看到这些程序的内存消耗存在巨大差异&#xff0c…

【Atlas200】华为AIPP配置文件使用

目录 AIPP介绍图像处理顺序例子:YUV420SP_U8转BGR格式归一化配置对应公式crop及padding功能配置生效AIPP转换模板 AIPP介绍 华为的AIPP(AI Preprocessing)是一种面向AI应用的图像预处理技术,旨在提高AI应用的效率和精度。AIPP支持…

C语言深度解析--数组

目录 一维数组的创建与初始化 一维数组的创建: 一维数组的初始化: 一维数组的使用: 一维数组在内存中的存储: 二维数组的创建与初始化 二维数组的创建: 二维数组的初始化: 二维数组的使用&#xf…

是面试官放水,还是公司太缺人了?华为原来这么容易就进了...

华为是大企业,是不是很难进去啊?” “在华为做软件测试,能得到很好的发展吗? 一进去就有9.5K,其实也没有想的那么难” 直到现在,心情都还是无比激动! 本人211非科班,之前在字节和腾…

以“智”提质丨信创呼叫

随着人工智能、大数据、云计算等新兴技术飞速发展,呼叫中心、全媒体智能客服等现已被广泛应用于多个行业领域。其中,呼叫中心作为政企对外服务的重要窗口,已从“传统电话营销”发展到“智能呼叫中心”阶段,以客户服务为核心&#…

Windows下Elasticsearch下载安装

Windows下Elasticsearch下载安装 最近搭一个语义搜索web需要用到es。 1.下载 下载地址:官网下载地址 下载zip格式解压就行,这里我下载的是8.7.1 1.1解压启动 解压之后,进入elasticsearch的bin目录,通过点击elasticsearch.ba…

0基础学习VR全景平台篇第28章:场景管理—遮罩功能

本期为大家带来蛙色VR平台,场景管理模块-遮罩功能! 功能位置示意 一、本功能将用在哪里? 遮罩分为两种,分别是地面遮罩和天空遮罩。 地面遮罩位于全景图底部的正中间,天空遮罩位于全景图顶部的正中间。 遮罩一方面可…

已解决python使用pymysql向mysql数据库插入数据报错pymysql.err.DataError: (1366, ‘‘)

已解决,在python代码是使用pymysql向mysql数据库插入数据时报错pymysql.err.DataError: (1366, ) 问题描述 我从某个网页上抓取并解析了一段html代码,然后将html代码转为utf-8格式,之后将html代码作为数据表的一个属性存入mysql数据库中&…

代码签名证书,保护应用程序安全性

在现代IT环境中,有大量不同的方式可以用来确保应用程序的安全性。其中一个就是从源头开始,让应用程序开发者能够对他们的代码进行数字签名,从而确保给定应用程序的完整性和真实性。 一直以来,认证机构安理会(CASC&…

2023年必备的10款交互设计软件

交互设计可以帮助明确产品需求和功能、进行用户测试和获取反馈、减少开发成本、促进团队合作,并在展示和推销产品时起到关键作用。通过有效的产品交互设计,可以提高产品的质量、用户体验和市场竞争力。 什么是产品交互设计? 产品交互设计是…

Linux查看磁盘利用率(iostat)

使用iostat命令可以查看磁盘的负载情况。iostat命令可以显示磁盘的I/O统计信息,包括磁盘的读写速度、I/O请求队列长度、CPU利用率等。 参数 Device:磁盘分区的名称。rrqm/s:每秒钟合并的读请求。wrqm/s:每秒钟合并的写请求。r/s…

11-FastDFS文件服务器 和 Nginx

1、什么是FastDFS 1、开源的轻量级分布式文件系统,用于解决大数据量存储和负载均衡等问题。 2、优点: 支持HTTP协议传输文件(结合Nginx); 对文件内容做Hash处理,节约磁盘空间; 支持负载均衡、整体性能较佳。 3、FastDFS的二个角色:跟踪服务器(Tracker)、存储服务器…