首页 > 编程语言 >Java之UDP端到端通讯基础

Java之UDP端到端通讯基础

时间:2024-09-12 14:52:44浏览次数:3  
标签:UDP java private public Java import new port 端到

一,发送器代码

package net.ittimeline.java.network.socket.udp.talk;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;

/**
 * 发送端
 */
public class TalkSend implements Runnable {
    private DatagramSocket client;
    private int port;
    private String toIp;
    private int toPort;
    private BufferedReader reader;
    private String msg;
    private byte[] datas;
    private DatagramPacket packet;
    public TalkSend(int port, String toIp, int toPort) {
        this.port = port;
        this.toIp = toIp;
        this.toPort = toPort;
        try {
            this.client = new DatagramSocket(port);
            this.reader = new BufferedReader(new InputStreamReader(System.in));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    @Override
    public void run() {
        while (true){
            if(null == this.client || null == this.reader){
                break;
            }
            try {
                this.msg = this.reader.readLine();
                this.datas = this.msg.getBytes();
                packet = new DatagramPacket(
                        this.datas,
                        0,
                        this.datas.length,
                        new InetSocketAddress(this.toIp, this.toPort)
                );
                this.client.send(packet);
                if(this.msg.equals("bye")){
                    break;
                }
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
        if(null != this.client){
            this.client.close();
        }
    }
}

二,  接收器代码

package net.ittimeline.java.network.socket.udp.talk;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;

/**
 * 接收端
 */
public class TalkReceive implements Runnable{
    private DatagramSocket server;
    private int port;
    private byte[] container;
    private byte[] datas;
    private int len;
    private String msg;
    private DatagramPacket packet;
    public TalkReceive(int port){
        this.port = port;
        try {
            this.server = new DatagramSocket(port);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    @Override
    public void run() {
        while(true){
            if(null == this.server){
                break;
            }
            this.container = new byte[1024 * 60];
            this.packet = new DatagramPacket(this.container,0,this.container.length);
            try {
                this.server.receive(this.packet);
                this.datas = this.packet.getData();
                this.len = this.packet.getLength();
                this.msg = new String(this.datas, 0, this.len);
                System.out.println(this.msg);
                if(this.msg.equals("bye")){
                    break;
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        if(null != this.server){
            this.server.close();
        }
    }
}

三,调用

1, 场景

实现老师与学生间的聊天

2,老师代码

package net.ittimeline.java.network.socket.udp.talk;

public class TalkTeacher {
    public static void main(String[] args) {
        new Thread(new TalkReceive(9999)).start();//接收
        new Thread(new TalkSend(4444,"localhost",8888)).start();//发送
    }
}

3, 学生代码

package net.ittimeline.java.network.socket.udp.talk;

public class TalkStudent {
    public static void main(String[] args) {
        new Thread(new TalkSend(7777, "localhost",9999)).start();//发送
        new Thread(new TalkReceive(8888)).start();
    }
}

4, 结果

Java之UDP端到端通讯基础_udp

标签:UDP,java,private,public,Java,import,new,port,端到
From: https://blog.51cto.com/aonaufly/11991521

相关文章

  • 基于java的ssm框架应急资源管理系统
     博主介绍:java高级开发,从事互联网行业六年,熟悉各种主流语言,精通java、python、爬虫、web开发,已经做了六年的程序开发,开发过上千套大学生实战程序,可以定制、也可成品项目,博客中有上百套程序可供参考,欢迎共同交流学习。......
  • Java小白一文讲清Java中集合相关的知识点(九)
    Map和Set常用的APIMap常用APIput(Kkey,Vvalue):将指定的键值对插入到映射中。get(Objectkey):返回与指定键关联的值,如果键不存在则返回null。remove(Objectkey):移除指定键及其对应的值。containsKey(Objectkey):判断是否包含指定的键。containsValue(Object......
  • JAVA面试官问你:CPU狂飙900%,该怎么处理?【转】
    首先,说明一下问题:CPU飙升200%以上是生产容易发生的场景场景:1:MySQL进程飙升900%大家在使用MySQL过程,想必都有遇到过CPU突然过高,或者达到200%以上的情况。数据库执行查询或数据修改操作时,系统需要消耗大量的CPU资源维护从存储系统、内存数据中的一致性。并发量大并且大量SQL性能低......
  • 基于java+SpringBoot+Vue的小徐影城管理系统设计与实现
    开发语言:Java数据库:MySQL技术:SpringBoot+MyBatis工具:IDEA/Ecilpse、Navicat、Maven系统简介小徐影城管理系统是一款基于Java、SpringBoot和Vue.js技术开发的影院管理系统,旨在为用户提供一个便捷、高效的在线购票和影院管理平台。系统通过B/S架构,实现了管理员和用......
  • SOMEIP_ETS_105: SD_ClientServiceGetLastValueOfEventUDPUnicast
    测试目的:验证DUT在客户端服务模式下能够订阅事件组,接收UINT8UDP单播事件,并在触发clientServiceGetLastValueOfEventUDPUnicast方法后返回该事件的值。描述本测试用例旨在确保DUT能够在客户端服务模式下正确地处理订阅和单播事件接收流程,并且能够通过特定的方法返回最近......
  • 【java逆向】3分钟理清Java对象头里面的那些杂事
    原创龙虾编程对象头是一个对象用于保存自身状态的区域,在HotSpot虚拟机中,对象在堆内存中存储的布局可以划分为三个部分:对象头(Header)、实例数据(InstanceData)、对齐填充(Padding),如下如所示:在Java中普通对象和数组对象的对象在布局上存在一定的差异,数组对象相比普通对象多了数......
  • 全国增值税发票查验接口平台-JavaScript发票验真api示例
    全国增值税发票查验接口平台旨在优化纳税服务,加强企业发票管理,确保税收工作的准确性。企业财务可以通过发票查验接口方便快捷的验证增值税发票管理系统开具发票的真伪,以实现发票的自动化管理,减少人工操作失误,提高识别、录入、查验的准确性和工作效率,从而有效防止税务欺诈和逃......
  • Docker脚本一键打包java镜像运行备份多端口共存
    效果./docker_build.sh8081后会创建一个新的8081端口容器,并创建一个8081镜像,并备份之前的镜像可以启用多个端口 结构  DockerFile#FROM#基础镜像,当前新镜像是基于哪个镜像的#MAINTAINER#镜像维护者的姓名混合邮箱地址#RUN#容器构建时需......
  • 010-BUG: org.springframework.cglib.core.CodeGenerationException: java.lang.refle
    参考:Unabletomakeprotectedfinaljava.lang.Classjava.lang.ClassLoader.defineClass-CSDN博客1.完整报错:"msg":"org.springframework.cglib.core.CodeGenerationException:java.lang.reflect.InaccessibleObjectException-->Unabletomakeprotect......
  • 内网映射向日葵如何配置UDP,TCP本地调试
    下载花生壳http://url.oray.com/share/BjIeIiIjJcD配置映射访问测试用你的专属域名测试即可......