Java通信协议——UDP通信协议,模拟聊天室(完整详解,附有代码)

news2024/9/19 16:56:04

UDP通信协议,模拟聊天室

需求说明
实现客户咨询问题,客服人员答复问题
分析
咨询时,客户是发送方,客服人员是接收方
答复时,客服人员是发送方,客户是接收方,实现思路和咨询时相同

当客户端输入 ending 时 会话结束。
运行时,先运行接收端,再运行发送端。
效果图:
在这里插入图片描述
在这里插入图片描述

接收端:

public class ReceiveMessTest {
    public static void main(String[] args) throws IOException {
// UDP多次接收 多次发送
// 接收端模拟TCP协议的服务器端
        System.out.println("---服务端---");

        // 1.创建接收端的DatagramSocket对象,
        DatagramSocket ds = null;
        DatagramPacket dp = null;

        Scanner sc  = new Scanner(System.in);
        // 1.创建接收端的DatagramSocket对象,
        ds = new DatagramSocket(10011);
        //循环实现多次接收
        while (true){

            // 2.创建接收数据的数据包
            // 重新打包数据
            byte[] bytes = new byte[1024];
           dp = new DatagramPacket(bytes,bytes.length);

            // 3.接收数据
            ds.receive(dp);

            // 4.解析数据包
            byte[] data = dp.getData();

            // 打印数据
            String msg = new String(data);
            System.out.println("客户端:"+msg);

// -----------------------------------------------------

            // 发送
            System.out.print("服务端请输入:");
            String s = sc.nextLine();
            // 获得上个数据包发送的地址
            // InetAddress address = dp.getAddress();
            SocketAddress address = dp.getSocketAddress();
            // 打包数据
            dp = new DatagramPacket(
                    s.getBytes(),
                    s.getBytes().length,
                    address
            );
            // 发送数据
            ds.send(dp);


        }



    }
}

发送端:

public class SendMessTest {
    public static void main(String[] args) throws IOException {

// UDP多次发送 多次接收
//发送端模拟TCP协议的客户端
        System.out.println("----客户端----");

        // 1.创建发端的对象
        DatagramSocket ds = null;
        DatagramPacket dp = null;

        // 2.打包数据
        // 2.1数据来自键盘录入
        Scanner sc = new Scanner(System.in);
        while (true){
            // 1.创建发端的对象
            ds = new DatagramSocket();

            System.out.print("请输入要发送的数据:");
            String s = sc.nextLine();
            // 结束发送的条件
            if ("ending".equals(s)){
                break;
            }
            // 2.2将发送的内容变成字节数组
            byte[] bytes = s.getBytes();
            // 2.3向127.0.0.1的设备发送
            InetAddress address = InetAddress.getByName("127.0.0.1");
            // 2.4接收设备的端口号
            int port = 10011;
            // 2.5 打包数据
            dp = new DatagramPacket(bytes,bytes.length,address,port);

            // 3.发送数据
            ds.send(dp);

// ----------------------------------------


            // 4.接收数据
            // 创建一个新的数组,用来接收数据
            byte[] bytes1 = new byte[1024];
            // 创建数据包
            dp = new DatagramPacket(bytes1,bytes1.length);
            // 接收数据
            ds.receive(dp);
            // 解析数据
            byte[] data = dp.getData();
            String s1 = new String(data);
            System.out.println("服务端:"+s1);


        }

        // 4.释放资源
        ds.close();




    }
}

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

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

相关文章

【5G QoS】详解5G QoS端到端工作机制

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G技术研究。 博客内容主要围绕…

大田上的路径跟踪论文汇总

文章目录 2022Path tracking control method and performance test based on agricultural machinery pose correction(Computers and Electronics in Agriculture)An optimal goal point determination algorithm for automatic navigation of agricult…

4款AI生成PPT工具推荐,提升工作效率

在如今的工作环境中,PPT制作是许多技术人员不可避免的任务,尤其是在汇报、展示技术方案、以及项目进展时。随着AI技术的快速发展,使用AI生成PPT成为了提高效率的一种新趋势。本文将介绍几款适合程序员、技术人员的AI生成PPT工具,帮…

如何用 HAproxy 实施高可用部署 | OceanBase 实践

背景介绍 最近,我们部署了Oceanbase数据库(以下简称OB),并将部分业务迁移至OB中运行。在部署过程中,我们虽然配置了3个OBProxy,但没有为它们设置高可用配置,应用被固定到某一个OBProxy 上&…

通信工程学习:什么是POS无源光分配器

POS:无源光分配器 POS(Passive Optical Splitter,无源光分配器)是无源光网络(Passive Optical Network, PON)中的一个重要组成部分,它位于光线路终端(OLT)和光网络单元&a…

基于Spring Boot的能源管理系统+建筑能耗+建筑能耗监测系统+节能监测系统+能耗监测+建筑能耗监测

介绍 建筑节能监测系统是基于计算机网络、物联网、大数据和数据可视化等多种技术融合形成的一套节能监测系统。 系统实现了对建筑电、水、热,气等能源、资源消耗情况的实时监测和预警、动态分析和评估,为用户建立了科学、系统的节能分析方法&#xff0c…

你天天用微服务还不知道心跳检测机制是什么?

目录标题 1. 心跳检测机制概述2. 心跳检测的具体实现2.1 服务注册与发现示例:Eureka 2.2 心跳包的格式2.3 超时机制 3. 实战中的心跳检测3.1 服务发现与注册中心3.2 定时任务与超时机制3.3 集群管理与协调3.4 故障隔离与恢复 4. 监控与告警5. 具体示例:Z…

制作一个rabbitmq-sdk

目录结构 pom.xml <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">&l…

VR全景摄影制作中的常见问题及解决方案

随着VR全景摄影技术的普及&#xff0c;越来越多的摄影师和企业开始尝试使用这种方式来展示产品、场景或服务。虽然VR全景摄影有着强大的视觉表现力和沉浸式体验&#xff0c;但在制作过程中也会遇到各种挑战。为了帮助大家更好地掌握VR全景摄影的制作技巧&#xff0c;今天给分享…

STM32 单片机最小系统全解析

STM32 单片机最小系统全解析 本文详细介绍了 STM32 单片机最小系统&#xff0c;包括其各个组成部分及设计要点与注意事项。STM32 最小系统在嵌入式开发中至关重要&#xff0c;由电源、时钟、复位、调试接口和启动电路等组成。 在电源电路方面&#xff0c;采用 3.3V 直流电源供…

【Bug解决】Nacos启动成功,但却无法访问(提示:无法访问此网站,192.168.10.88的响应时间过长)

项目场景&#xff1a; 在虚拟机上通过Docker创建Nacos容器&#xff0c;已经创建成功&#xff0c;查看Nacos启动日志也是成功。但通过端口号加8848/nacos&#xff08;如&#xff1a;http://IP:8848/nacos&#xff09;无法访问到Nacos管理页面。 愿意分析一&#xff1a; 先检查好…

MyISAM引擎介绍

文章目录 特点适用场景不足锁机制表级锁的类型锁的获取和释放锁的等待队列 示例共享锁排他锁READ LOCAL MyISAM是MySQL的一种存储引擎&#xff0c;它以其简单性和高速度而著称。在早期的MySQL版本中&#xff0c;MyISAM广泛使用&#xff0c;尤其是在那些以读操作为主的应用场景中…

Parallels Desktop 20(Mac虚拟机) v20.0.0 for Mac 最新破解版(支持M系列)

Parallels Desktop 20 for Mac 正式发布&#xff0c;完全支持 macOS Sequoia 和 Windows 11 24H2&#xff0c;并且在企业版中引入了全新的管理门户。 据介绍&#xff0c;新版本针对 Windows、macOS 和 Linux 虚拟机进行了大量更新&#xff0c;最大的亮点是全新推出的 Parallels…

6款好用的电脑监控软件推荐|2024电脑监控软件干货整理!

电脑监控软件成为了企业管理中不可或缺的工具&#xff0c;这些软件不仅能够帮助企业实时监控员工的工作状态&#xff0c;还能有效提升团队效率和保障数据安全。 本文将为您推荐六款2024年值得一试的电脑监控软件&#xff0c;每款软件都有其独特的亮点和优势&#xff0c;适合不…

【Java-线程池】

目录 什么是线程池&#xff1a; 线程池七大参数&#xff1a; 参数详细介绍&#xff1a; 1.核心线程数&#xff1a; 2.最大线程数&#xff1a; 3.线程存活时间&#xff1a; 4.时间单位&#xff1a; 5. 阻塞工作队列&#xff1a; 6.线程工厂&#xff1a; 7.拒绝策略&am…

青柠视频云——视频丢包(卡顿、花屏、绿屏)排查

一、问题说明 近期有客户反馈&#xff0c;接入平台的设备经常出来卡顿、花屏、录屏的情况&#xff0c;出现这样的场景很是尴尬。 客户是私有化部署在公网环境&#xff0c;于是我们联系客户&#xff0c;对问题进行追踪排查。 二、场景复现 我们现场情况确认的过程中&#xff0c;…

怎么理解机器学习与数据融合的集成?

在科技进步的浪潮中&#xff0c;数据的重要性日益成为共识。但数据本身&#xff0c;若不经过有效的整合与分析&#xff0c;其价值便难以充分发挥。本文将探讨如何通过集成数据融合与机器学习&#xff0c;提升预测和决策的准确性。将海量数据转化为富含洞察力的信息&#xff0c;…

腾讯云TDSQL数据库认证值得考吗?来看看TDSQL证书有什么用

国内市场上的数据库产品有不少&#xff0c;很多大企业都有自己的数据库产品&#xff0c;比如金仓的KingBase、华为的OpenGauss、阿里云的PolarDB、达梦DM数据库等等&#xff0c;腾讯云也有自己的数据库产品&#xff0c;叫做TDSQL数据库&#xff0c;TDSQL数据库有两个分支&#…

基于SpringBoot+定时任务实现地图上绘制车辆实时运动轨迹图

目录 1. 项目结构 2. Maven依赖配置 (pom.xml) 3. 实现后端服务 4. 配置文件 (application.properties) 5. 启动项目 6. 访问页面 实现基于北斗卫星的车辆定位和轨迹图的Maven工程&#xff08;使用模拟数据&#xff09;&#xff0c;我们将使用以下技术&#xff1a; Spri…

企业导师面对面,产教融合实训基地搭建人才成长快车道

产教融合实训基地是指以特定专业群为服务对象&#xff0c;由高职院校和企业双方共同投入、共同利用&#xff0c;并由若干实验实训室和模块产线组成的综合性实训基地。这一基地不仅具备工学结合的功能&#xff0c;还融合了教育、产业和科技创新的要素&#xff0c;形成了一种特殊…