J029_UDP通信

一、需求描述

实现UDP的通信

1.1 一发一收

1.1.1 ClientTest1

package com.itheima.udp;import java.net.*;import static java.net.InetAddress.*;//完成udp通信快速入门,实现一收一发
public class ClientTest1 {public static void main(String[] args) throws Exception {//创建客户端对象DatagramSocket socket = new DatagramSocket();//创建数据包对象封装要发出去的数据byte[] bytes = "我是快乐的客户端,我负责发送数据".getBytes();//4个参数代表://1、要发送的数据//2、要发送的数据大小(字节数)//3、服务端的IP//4、服务端程序的端口号DatagramPacket packet = new DatagramPacket(bytes,bytes.length, getLocalHost(),6666);//开始发送数据包的数据出去socket.send(packet);System.out.println("客户端数据发送完毕!!!");//发送后关闭通信管道socket.close();}
}

1.1.2 ServerTest1

package com.itheima.udp;import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;public class ServerTest1  {public static void main(String[] args) throws Exception {System.out.println("-----服务端启动----------");//创建一个服务端对象,用来接收数据。需要注册端口DatagramSocket socket = new DatagramSocket(6666);//创建一个数据包对象,用于接收数据byte[] buffer = new byte[1024 * 64];DatagramPacket packet = new DatagramPacket(buffer,buffer.length);//开始接受数据socket.receive(packet);//获取本次数据包接收了多少数据int len = packet.getLength();String res = new String(buffer,0,len);System.out.println(res);//获取客户端的IP地址和端口号System.out.println(packet.getAddress().getHostAddress());System.out.println(packet.getPort());//释放资源socket.close();}
}

1.1.3 运行结果

 

1.2 多发多收

1.2.1 Client

package com.itheima.udp2;import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.util.Scanner;public class Client {public static void main(String[] args) throws Exception {//创建客户端对象DatagramSocket socket = new DatagramSocket();Scanner sc = new Scanner(System.in);while (true){//让用户输入要发送的消息System.out.println("请说:");String msg = sc.nextLine();//输入exit时退出if ("exit".equals(msg)) {System.out.println("欢迎下次光临!退出成功!!!");//关闭通道socket.close();break;}byte[] bytes = msg.getBytes();//创建发送数据的数据包DatagramPacket packet = new DatagramPacket(bytes,bytes.length,InetAddress.getLocalHost(),6666);//开始发送数据socket.send(packet);}//客户端数据发送完毕System.out.println("客户端数据发送完毕");}
}

1.2.2 Server

package com.itheima.udp2;import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;public class Server  {public static void main(String[] args) throws Exception {System.out.println("-----服务端启动----------");//创建一个服务端对象,用来接收数据。需要注册端口DatagramSocket socket = new DatagramSocket(6666);//创建一个数据包对象,用于接收数据byte[] buffer = new byte[1024 * 64];DatagramPacket packet = new DatagramPacket(buffer,buffer.length);while (true) {//开始接受数据socket.receive(packet);//获取本次数据包接收了多少数据int len = packet.getLength();String res = new String(buffer,0,len);System.out.println(res);//获取客户端的IP地址和端口号System.out.println(packet.getAddress().getHostAddress());System.out.println(packet.getPort());System.out.println("----------------------");}}
}

1.2.3 运行结果

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构之单链表的实现(不带头)】

1.单链表 1.1概念与结构 链表是一种物理存储结构上非连续,非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针连接次序实现的。 可以用下图便于理解 节(结)点: 与顺序表不同的是,链表里面的每节“车…

NRK3301识别语音芯片在智能按摩椅中的应用与体验提升

在健康与舒适日益受到关注的今天,按摩椅作为缓解疲劳、舒缓压力的设备受到了广大消费者的喜爱。然而,传统的按摩椅操作方式往往繁琐且不直观。在这一背景下,NRK3301语音识别芯片的应用为按摩椅带来了新的变革。‌ 一、高识别准确率和快速响应…

halcon深度学习语义分割预处理图片遇到的坑

1.最近使用halcon深度学习语义分割,做缺陷检测。 2.在使用halcon的深度学习标准工具,标注图片 3.标注好图片后,到处预处理,发现报错,[‘Multiple matching segmentation files for image /1.jpg’]意思是:[’ image /…

二十天刷leetcode【hot100】算法- day1[前端Typescript]

哈希表 1. 两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你…

go语言day21 goland使用gin框架、gorm框架操作mysql数据库redis数据库 使用宝塔创建redis数据库

GORM 指南 | GORM - The fantastic ORM library for Golang, aims to be developer friendly. gorm package - github.com/jinzhu/gorm - Go Packages go语言day20实现投票功能项目包-CSDN博客 gin框架标准项目结构: models:存放对应实体类和gorm包增删…

DVWA(SQL注入)medium、high

medium (1)判断注入是字符型还是数值型 数值型,获得了用户信息。 id 1 or 11 (2)查询字段数 为3时报错,代表字段数为2。 1 order by 3 (3)显示字段顺序 1 union select 1,2 &…

机器学习练手(三):基于决策树的iris 多分类和波士顿房价预测

总结:本文为和鲸python 可视化探索训练营资料整理而来,加入了自己的理解(by GPT4o) 原活动链接 原作者:vgbhfive,多年风控引擎研发及金融模型开发经验,现任某公司风控研发工程师,对…

【精通Redis】Redis事务

文章目录 前言一、标准事务1.1 标准事务的特性1.2 标准事务的生命周期1.3 事务的作用 二、Redis事务2.1 Redis事务的特性2.2 Redis事务与普通事务的区别 三、Redis事务常用命令总结 前言 我们在使用Redis的时候,有时为了处理多个结构,需要向Redis中一次…

Linux系统窗口水印难点分析

给应用程序加水印是保护数据的一种方式,window上可以通过给进程通过注入的方法给进程的窗口创建一个同大小的副窗口,在副窗口上绘制水印内容,同时设置副窗口透明同时透传事件,这样就可以达到在源窗口上显示水印的效果且不影响程序…

深⼊理解指针(3)

1. 字符指针变量 2. 数组指针变量 3. ⼆维数组传参的本质 4. 函数指针变量 5. 函数指针数组 6. 转移表 1. 字符指针变量 在指针的类型中我们知道有⼀种指针类型为字符指针 ⼀般使⽤: char* 这两种方式都是把字符串中的首字符的地址赋值给pc。 在这串代码中 str1内容的地…

ArkTS通用属性

目录 一、尺寸设置 宽高,外边距,内边距,尺寸size layoutWeight constraintSize 二、位置设置 align direction position offset 使用Edge方式position,offset 三、布局约束 aspectRatio displayPriority 四、Flex布局 flexBas…

RabbitMQ高级篇(如何保证消息的可靠性、如何确保业务的幂等性、延迟消息的概念、延迟消息的应用)

文章目录 1. 消息丢失的情况2. 生产者的可靠性2.1 生产者重连2.2 生产者确认2.3 生产者确认机制的代码实现2.4 如何看待和处理生产者的确认信息 3. 消息代理(RabbitMQ)的可靠性3.1 数据持久化3.2 LazyQueue( 3.12 版本后所有队列都是 Lazy Qu…

如何对我们要多次使用的页面进行一个抽取

有的时候,一个页面我们要多次使用,该怎么抽取呢? 创建一个文件夹,用于存放多次使用的页面 将要多次使用的组件(<template>)和风格(<style>)剪切出来,放入新建的页面 直接进行引用 导入 然后就可以使用

嵌入式C++、QML与MQTT:智能化农业灌溉管理系统设计思路(代码示例)

目录 一、项目概述 二、系统架构 三、环境搭建 1. 硬件环境 2. 软件环境 四、代码实现 1. 硬件端代码示例 2. 软件端代码示例 a. 后端代码&#xff08;Node.js MQTT&#xff09; b. 前端代码&#xff08;QML&#xff09; 五、项目总结 一、项目概述 随着全球对农业…

文件包含漏洞Tomato靶机渗透_详解

一、导入靶机 将下载好的靶机拖入到VMware中&#xff0c;填写靶机机名称(随便起一个)和路径 虚拟机设置里修改网络状态为NAT模式 二、信息收集 1、主机发现 用御剑扫描工具扫描虚拟机的NAT网段&#xff0c;发现靶机的IP是192.168.204.141 2、端口扫描 用御剑端口扫描扫描全…

windows 文件夹下的文件名称全部输入到txt文件中(已解决)

打开cmd 命令行&#xff0c;记住一定是cmd命令行 进入cmd 目前在C盘&#xff0c;跳转D盘&#xff0c;输入d:。 d: 回车&#xff1b; 在输入或者粘贴你的目的路径 我的是 D:\opencv****\build\x64\vc14\lib&#xff0c;回车进入目的路径。 然后 再输入&#xff1a;dir /b &…

Tantivy使用Rust 开发的全文搜索引擎库

一、概述 Tantivy是一个全文搜索引擎库&#xff0c;灵感来自Apache Lucene&#xff0c;用Rust编写。 如果你正在寻找Elasticsearch或Apache Solr的替代品&#xff0c;请查看我们基于Tantivy构建的分布式搜索引擎Quiuckwit。 Tantivy更接近Apache Lucene&#xff0c;而不是E…

K8s集群部署

操作系统初始化配置 #关闭防火墙 systemctl stop firewalld systemctl disable firewalld iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X#关闭selinux setenforce 0 sed -i s/enforcing/disabled/ /etc/selinux/config…

当Vercel的域名验证规则碰上JPDirect这种不配合的同学把我的脑袋擦出了火星子

文章目录 前言问题简单说明Vercel主要功能和特点 JPDirectNameServers解决方案 总结 前言 处理域名转移这件事已经过去好几天&#xff0c;终于抽出点时间来总结一下&#xff0c;解决这件事大概花了2周多时间&#xff0c;因为时差的原因导致沟通缓慢&#xff0c;今天准备长话短…

Python 爬虫项目实战(二):爬取微博热搜榜

前言 网络爬虫&#xff08;Web Crawler&#xff09;&#xff0c;也称为网页蜘蛛&#xff08;Web Spider&#xff09;或网页机器人&#xff08;Web Bot&#xff09;&#xff0c;是一种按照既定规则自动浏览网络并提取信息的程序。爬虫的主要用途包括数据采集、网络索引、内容抓…