记录DatagramSocket的使用 | UDP协议下的数据传输 | java学习笔记

news/2024/5/18 12:07:57 标签: udp, java, 笔记, datagramsocket

a端

java">import java.io.*;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

/**
 * a端发送“今天星期几”给b端
 */
public class UDPa {
    public static void main(String[] args) throws IOException {
        //a端绑定9999端口————a端从9999接收消息
        DatagramSocket dgSocket = new DatagramSocket(9999);
        byte[] bytes = "今天星期几?".getBytes();
        // public DatagramPacket(byte buf[], int offset, int length,
        //                          InetAddress address, int port)
        DatagramPacket packet = new DatagramPacket(bytes, 0, bytes.length,
                InetAddress.getLocalHost(), 9998);
        dgSocket.send(packet);

        byte[] bytes2 = new byte[1024];
        //public DatagramPacket(byte buf[], int length)
        packet = new DatagramPacket(bytes2,bytes2.length);
        dgSocket.receive(packet);
        System.out.println("a接收到的信息:"+new String(packet.getData()));

        dgSocket.close(); // 记得关闭流!
    }
}

b端

java">import java.io.*;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

/**
 * b端接收a端发来的消息,并打印
 *  b再发送给a:“星期一”
 */
public class UDPb {
    public static void main(String[] args) throws IOException {
        //b端绑定9998端口————b端从9998接收消息
        DatagramSocket dgSocket = new DatagramSocket(9998);
        byte[] bytes = new byte[1024];
        //public DatagramPacket(byte buf[], int length)
        DatagramPacket packet = new DatagramPacket(bytes,bytes.length);
        dgSocket.receive(packet);
        System.out.println("b接收到的信息:"+new String(packet.getData()));

        byte[] bytes2 = "今天星期一。".getBytes();
        // public DatagramPacket(byte buf[], int offset, int length,
        //                          InetAddress address, int port)
        packet = new DatagramPacket(bytes2, 0, bytes2.length,
                InetAddress.getLocalHost(), 9999);
        dgSocket.send(packet);

        dgSocket.close();
    }
}

运行结果

在这里插入图片描述
在这里插入图片描述

参考资料

https://www.bilibili.com/video/BV1fh411y7R8?p=678


http://www.niftyadmin.cn/n/5016751.html

相关文章

《微服务架构设计模式》第二章

文章目录 微服务架构是什么软件架构是什么软件架构的定义软件架构的41视图模型为什么架构如此重要 什么是架构风格分层式架构风格六边形架构风格微服务架构风格 为应用程序定义微服务架构识别操作系统根据业务能力进行拆分根据子域进行拆分拆分指导原则单一职责原则&#xff08…

每日一题:leetcode 2594 修车的最少时间

给你一个整数数组 ranks ,表示一些机械工的 能力值 。ranksi 是第 i 位机械工的能力值。能力值为 r 的机械工可以在 r * n2 分钟内修好 n 辆车。 同时给你一个整数 cars ,表示总共需要修理的汽车数目。 请你返回修理所有汽车 最少 需要多少时间。 注意…

rman异机恢复的异常处理

因客户需要测试,使用生产环境的rman备份在虚拟机恢复中,忘记调整redo位置,打开时报错及处理过程。 SQL> alter database open resetlogs; alter database open resetlogs * ERROR at line 1: ORA-00344: unable to re-create online …

SAP 创建动态内表

创建动态内表 一、根据表名创建内表 程序代码: "复杂方式 SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001. PARAMETERS:p_tab TYPE string. SELECTION-SCREEN END OF BLOCK b1.DATA:lr_struct TYPE REF TO data,lr_table TYPE REF TO data. …

python爬虫的反扒技术有哪些如何应对

Python爬虫常见的反扒技术主要有以下几种: IP封禁:有些网站会限制爬虫的IP访问频率,如果访问流量过大,可能会被封禁IP。可以通过使用代理IP或者轮换IP的方式规避此类反扒技术。 用户代理限制:有些网站会通过检测请求头中的用户代…

AtCoder Beginner Contest 319

AtCoder Beginner Contest 319 A - Legendary Players 思路&#xff1a; 直接map存以下输出即可 #include<bits/stdc.h> using namespace std; #define int long long #define rep(i,a,n) for(int ia;i<n;i) #define per(i,a,n) for(int in;i>a;i--) #define pb…

torch.cuda.is_available() 解决方

本人使用的显卡如下&#xff0c;打开任务管理器查看 Anaconda下载哪个版本都可以 使用命令conda create -n pytorch python3.6创建一个名为pytorch的环境&#xff0c;解释器使用3.6的 使用命令conda activate pytorch进入该环境 进入pytorch官网&#xff0c;选择下列选项 复…

LabVIEW通过IEC61508标准验证ITER联锁系统

LabVIEW通过IEC61508标准验证ITER联锁系统 保护环境要求系统能够保护机器免受工厂系统故障或机器危险操作造成的严重损坏。负责此功能的ITER系统是联锁控制系统&#xff08;ICS&#xff09;。该系统通过中央联锁系统&#xff08;CIS&#xff09;监督和控制不同的工厂联锁系统&…