Java学习笔记38——网络编程02

2023-10-29

UDP通信程序

UDP通信原理

UDP协议是一种不可靠的网络协议,它在通信两端各自建立一个Socket对象,但是这两个Socket只是发送,接收数据对象,因此对于基于UDP协议的通信双方而言,没有所谓的客户端和服务器的概念

Java 提供了DatagramSocket类作为基于UDP协议的Socket

UDP发送程序

  1. 创建发送端的Socket对象(DatagramSocket)
  2. 创建数据,并把数据打包
  3. 调用DatagramSocket对象的方法发送数据
  4. 关闭发送端
public class SendDemo {
    public static void main(String[] args) throws IOException {
        DatagramSocket ds=new DatagramSocket();
        //数据报包
        byte[] byts="Hello World!".getBytes();
        int length=byts.length;
        InetAddress address=InetAddress.getByName("127.0.0.1");
        int port=10086;
        DatagramPacket dp=new DatagramPacket(byts,length,address,port);

        ds.send(dp);

        ds.close();
    }
}

UDP接受数据

  1. 创建接收端的Socket对象(DatagramSocket)
  2. 创建数据包接收数据
  3. 调用DatagramSocket对象方法接收数据
  4. 解析数据包并把数据在控制台显示
  5. 关闭接收端
public class ReceiveDemo {
    public static void main(String[] args) throws IOException {
        DatagramSocket ds=new DatagramSocket(10086);
        byte[] byts=new byte[1024];
        DatagramPacket dp=new DatagramPacket(byts,byts.length);
        ds.receive(dp);
        byte[] datas=dp.getData();
        String dataString=new String(datas,0,dp.getLength());
        System.out.println(dataString);
        ds.close();
    }
}

UDP联系

public class SendDemo {
    public static void main(String[] args) throws IOException {
        DatagramSocket ds=new DatagramSocket();

        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        String line;
        while((line=br.readLine())!=null){
            if("886".equals(line)){
                break;
            }
            byte[] bys=line.getBytes();
            DatagramPacket dp=new DatagramPacket(bys,bys.length,
                    InetAddress.getByName("127.0.0.1"),10086);
            ds.send(dp);
        }
        ds.close();
    }
}
public class ReceiveDemo {
    public static void main(String[] args) throws IOException {
        DatagramSocket ds=new DatagramSocket(10086);

        byte[] bys=new byte[1024];
        DatagramPacket dp=new DatagramPacket(bys,bys.length);
        while (true){
            ds.receive(dp);
            byte[] datas=dp.getData();
            String dataString=new String(datas,0,dp.getLength());
            System.out.println(dataString);
        }


    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java学习笔记38——网络编程02 的相关文章

  • Hashmap并发问题

    我有一个哈希图 出于速度原因 我希望不需要锁定 假设我不介意过时的数据 同时更新它和访问它会导致任何问题吗 我的访问是获取 而不是迭代 删除是更新的一部分 是的 这会导致重大问题 一个例子是向散列映射添加值时可能发生的情况 这可能会导致表重
  • JavaFX 图像未在舞台中显示

    我尝试了很多次 尝试了很多方法 但都无法让自己的形象在舞台上如我所愿 我认为这可能与java寻找资源的路径有关 但我不确定 因为我刚刚开始使用视觉库 在本例中为JavaFX 这是我的目录结构 MyProject assets img myI
  • 将 Hibernate 对象序列化为 JSON 时抛出异常

    好吧 我正在使用 Hibernate 将一个小型数据库加载到一些表示表的类并与数据库交互 一切都很好 我真的可以看到所有结果 而且我没有任何空字段 所有这些都已被使用 这里我展示了 主 类 表 import javax persistenc
  • 如何比较 Struts 2 中 url 请求参数中的单个字符

    我正在读取具有单个字符的 url 参数 它将是Y or N 我必须写一个条件来检查它是否Y or N并做相应的事情 这是我写的 但似乎不起作用 总是转到其他地方 网址是
  • 哪个 Swing 布局管理器可以获得我想要的布局?

    我正在尝试按照这个模型制作一个基本的登录菜单 我决定将整个菜单放入 JPanel 中 以便在连接成功后我可以切换到另一个面板 所以我决定使用 Borderlayout 将标题放在北区 将连接按钮放在南区 我将边框布局的中心本身设置为面板 我
  • 字符串池可以包含两个具有相同值的字符串吗? [复制]

    这个问题在这里已经有答案了 字符串池可以包含两个具有相同值的字符串吗 String str abc String str1 new String abc Will the second statement with new operator
  • 容器中的 JVM 计算处理器错误?

    最近我又做了一些研究 偶然发现了这一点 在向 OpenJDK 团队抱怨之前 我想看看是否有其他人观察到这一点 或者不同意我的结论 因此 众所周知 JVM 长期以来忽略了应用于 cgroup 的内存限制 众所周知 现在从 Java 8 更新某
  • Intellij 中的 Google OR-Tools:UnsatisfiedLinkError

    我正在建立一个应该使用 Google OR Tools 的 java 框架 下面的代码编译成功 但在运行时抛出异常 Exception in thread main java lang UnsatisfiedLinkError com go
  • Jenkins 的代码覆盖率 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 当您在数组列表上调用remove(object o)时,它如何比较对象?

    当您在 java 中的数组列表上调用remove object o 时 它如何比较对象以找到要删除的正确对象 它使用指针吗 或者它使用 Comparable 接口来比较对象吗 ArrayList remove 依赖于对象的实现Equal方法
  • 创建正则表达式匹配数组

    在Java中 我试图将所有正则表达式匹配返回到一个数组 但似乎您只能检查模式是否匹配某些内容 布尔值 如何使用正则表达式匹配来形成与给定字符串中的正则表达式匹配的所有字符串的数组 4城堡的回答 https stackoverflow com
  • 如何将 arraylist 从 servlet 传递到 javascript?

    我通过在属性中设置数组列表并将其转发到 jsp 来从 servlet 传递数组列表 Servlet ArrayList
  • 了解 Spark 中的 DAG

    问题是我有以下 DAG 我认为当需要洗牌时 火花将工作划分为不同的阶段 考虑阶段 0 和阶段 1 有些操作不需要洗牌 那么为什么 Spark 将它们分成不同的阶段呢 我认为跨分区的实际数据移动应该发生在第 2 阶段 因为这里我们需要cogr
  • 为什么我的代码会产生错误:该语句没有返回结果集[重复]

    这个问题在这里已经有答案了 我正在从 Microsoft SQL Server Studio 执行以下查询 该查询工作正常并显示结果 SELECT INTO temp table FROM md criteria join WHERE us
  • 使用 secp256r1 曲线和 SHA256 算法生成 ECDSA 签名 - BouncyCastle

    我正在尝试使用带有 secp256r1 曲线 P256 的 ECDSA 和用于消息哈希的 SHA256 算法生成签名 我也在使用 Bouncy Castle 库 下面的代码 public class MyTest param args pu
  • Java中的回调接口是什么?

    SetObserver 接口的代码片段取自有效的Java 避免过度同步第67条 public interface SetObserver
  • 警告:无法更改每个人的权限:

    当运行 Java 快速入门示例时https developers google com drive web quickstart java hl hu https developers google com drive web quicks
  • 对于当前月份和日期但年份不同的日期,经过的月份计算未给出正确的结果

    我正在尝试计算自特定日期以来经过的月份 该函数工作正常 尽管如果我将今天的日期与过去的不同年份放在一起 它会给我一个月的差异 不到一个月 假设对于所有日期 该函数都运行良好 除了 如果今天是 2014 03 06 YYYY MM DD 并且
  • 失败时石英重试

    假设我有一个这样配置的触发器
  • 为什么范围为“provided”的依赖项会隐藏 Maven 中的传递依赖项?

    我的 Maven 项目中有三个模块 这稍微简化了 model包含JPA注释的实体类 坚持实例化一个实体管理器并调用它的方法 应用创建类的实例model 设置一些值并将它们传递给坚持 model and 坚持显然取决于javax persis

随机推荐

  • (环境搭建四) ubunut安装gpu版本pytorch: (Ubuntu16.04 RTX2080ti: 安装NVIDIA驱动+cuda10.0+cudnn7.4)

    背景介绍 新机器2080ti的显卡 安装gpu版本pytorch 后来又装了一台2张3080ti的机器 本文参考 1 Ubuntu16 04 RTX2080 安装NVIDIA驱动 cuda10 0 cudnn7 3 1https blog
  • 【华为OD机试真题 JAVA】最大N个数与最小N个数的和

    JS版 华为OD机试真题 JS 最大N个数与最小N个数的和 标题 最大N个数与最小N个数的和 时间限制 1秒 内存限制 262144K 语言限制 不限 给定一个数组 编写一个函数来计算它的最大N个数与最小N个数的和 你需要对数组进行去重 说
  • 基于SD卡的FatFs文件系统(FatFs移植到STM32)

    平台 STM32ZET6 核心板 ST LINK V2 SD卡 USB串口线 一 移植 工程介绍 主要文件在USER组中 bsp sdio sdcard c bsp sdio sdcard h和main c 另外FatFs是用来后面移植文件
  • SpringBoot输出“Hello”

    1 创建SpringBoot 创建controller包 其绝对路径是C Dpan javaProject jProject src main java com example jproject controller 在controller
  • 给已经创建好的项目添加eslint

    今天拿到一个项目 发现没有安装eslint 现在就在这大概记录一下vue项目添加eslint的具体的过程 实现目标 给项目添加eslint 在这叫做demo 准备工作 找一个已经开启了eslint的项目 在这叫做demo1 没有的话 可以直
  • 数字图像处理学习笔记(一)

    文章目录 前言 第一章绪论 1 1 什么是数字图像处理 数字图像 数字图像处理 像素 图像处理的三种典型计算处理 1 2 数字图像处理起源 1 3 数字图像处理应用 1 4 数字图像处理基本内容 1 5 图像处理系统的组成 1 6 小结 第
  • 通俗易懂详解typedef函数指针

    1 函数指针 第一个问题 搞清楚函数指针 必须知道函数指针的实质是一个是一个指针 并不是函数 函数有自己的函数体 而指针只是一个变量 也就比如我们常声明的int a 0中的a一样 细致的讲 如果在程序中定义了一个函数 那么在编译时系统就会为
  • csv批量读取测试数据

    1 添加循环控制器 需要注意请求 CSV配置都在循环控制器下 控制器次数为测试用例个数 2 CSV文件 需要注意不用加 因为读取出数据会自动加上 3 CSV配置 4 查看结果树 需要注意如果接口文档写了信息头 就一定要配置
  • web3.0的简单入门与项目介绍

    web3 0 是什么 1 简介 Web3 0是通过区块链等技术实现更加智能化 去中心化 安全可靠的应用 Web3 0的主要特点包括 去中心化 Web3 0将数据和应用从中心化的服务器转移到分布式的节点上 实现去中心化的应用 安全可靠 Web
  • 机考[81 - 90]

    华为机考 081 字符统计及重排 082 组成最大数 083 最大N个数与最小N个数的和 084 最大花费金额 085 最大矩阵和 086 最大括号深度 087 最远足迹 088 最长连续子序列 089 最长元音子串的长度 090 最长子字
  • 逻辑思维是运用计算机科学的基础概念,简析计算思维中的思维方式及思维本质...

    龙源期刊网 http doc docsou com 简析计算思维中的思维方式及思维本质 作者 张菡 来源 科学与财富 2020年第01期 摘要 计算思维是运用计算机科学的基础概念求解问题 设计系统以及理解人类行为的思维活动 本文主要介绍了计
  • 嵌入式linux应用开发完全手册(一)

    第一篇 嵌入式Linux开发环境构建 1 1 2 嵌入式发展 SCM Single Chip Microcomputer 单片机 MCU Micro Controller Unit 微控制器 SoC System on a Chip 系统级
  • 共享打印机 需要查找inf文件_打印机怎么用图文详解

    大家好 今天分享一篇来自小白系统官网 xiaobaixitong com 的图文教程 打印机在办公场所是非常易见的设备 对于打印机的使用需要也是比较大 但是很多人其实并不晓得打印机怎么用 每次打印的时候都要叫人帮忙 本文就来详细教大家如何解
  • 数据库基础题

    讲一下原来公司里建表的规范有哪些 这些规范有什么好处 事务的几个隔离级别 什么是聚集索引和非聚集索引 数据类型TIMESTAMP和DATETIME有什么不同 一个表有是那个查询字段 年龄 性别 姓名 符合索引怎么建 建的原则是什么 用户表
  • 【读书笔记】高级FPGA设计之面积结构设计

    目录 面积结构设计 折叠流水线 基于控制的逻辑复用 资源共享 复位对面积的影响 无复位的资源 无置位的资源 无同步复位的资源 复位 RAM 利用置位 复位触发器引脚 总结 面积结构设计 本篇讨论数字设计的三个主要物理特性的第二个 面积 并分
  • 【VMware】开启虚拟机时 出现“无法打开内核设备“\\.\Global\vmx86”: 系统找不到指定的文件“,这样完美解决

    今早我打开虚拟机时发现以往从没有出现过打不开的问题 今天竟然出现了 不论我尝试多少次 都是出现 无法打开内核设备 Global vmx86 系统找不到指定的文件 针对这个问题 我尝试了很多方法 以下这种方法是我觉得最好用的方法 Window
  • 别了,Firebug!

    点击上方公众号 可快速关注 转自 技术最前线 TopITNews 如有好文章投稿 请点击 这里了解详情 如果你是前端开发者 那你肯定知道或用过 Firebug 10月24日 Mozilla 工程师和 Firebug 团队领导 Jan Hon
  • “35岁还没副业,都不好意思混职场”:摆脱死工资推荐这种副业

    最近很流行一个词 叫 副业刚需 不管从事什么工作 作为一个成年人都应该要有自己的Plan B 根据某招聘网站发布的研究报告显示 43 9 白领当下有副业刚需 且随年龄增加 对副业的需求程度也在提升 在95后 90后 80后 70后中 有副业
  • drool 7.x 属性:duration

    规则 package com rules import entity Ping declare Ping role event 要把插入的数据声明为event 默认是fact expires 20s 用来显示设置事件的过期时间 也就是说过了
  • Java学习笔记38——网络编程02

    UDP通信程序 UDP通信程序 UDP通信原理 UDP发送程序 UDP接受数据 UDP联系 UDP通信程序 UDP通信原理 UDP协议是一种不可靠的网络协议 它在通信两端各自建立一个Socket对象 但是这两个Socket只是发送 接收数据