Unity与java后端UDP通信
1. unity客户端代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Net.Sockets;
using System.Net;
using System.Threading;
using System.Text;
using System;public class Udp : MonoBehaviour
{static Socket client; // clientstatic Thread reciveThread;static Thread sendThread;static EndPoint server;void Start(){server = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8800);client = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);client.Bind(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 6666));//绑定端口号和IPreciveThread = new Thread(ReciveMsg);//开启接收消息线程reciveThread.Start();sendThread = new Thread(()=>SendMsg("hello, first time"));//开启发送消息线程sendThread.Start();}// Update is called once per framevoid Update(){if (Input.GetKeyDown(KeyCode.M)) {String msg = "time:" + Time.deltaTime;SendMsg(msg);}}void OnDestroy() {client.Close();}/// <summary>/// 向特定ip的主机的端口发送数据报/// </summary>static void SendMsg(String msg){client.SendTo(Encoding.UTF8.GetBytes(msg), server);}/// <summary>/// 接收发送给本机ip对应端口号的数据报/// </summary>static void ReciveMsg(){while (true){Thread.Sleep(100);EndPoint point = new IPEndPoint(IPAddress.Any, 0);//用来保存发送方的ip和端口号byte[] buffer = new byte[1024];int length = client.ReceiveFrom(buffer, ref point);//接收数据报string message = Encoding.UTF8.GetString(buffer,0,length);Debug.Log(message);}}
}
2. java服务端代码:
package cn.com.zh.udp;import cn.com.zh.qmcq.All;import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;public class UDPServer {public static void main(String[] args) throws IOException {/** 接收客户端发送的数据*///1.创建服务器端DatagramSocket,指定端口DatagramSocket socket=new DatagramSocket(8800);//2.创建数据报,用于接收客户端发送的数据byte[] data =new byte[1024];//创建字节数组,指定接收的数据包的大小System.out.println("****服务器启动,等待客户端连接****");int count=1;while(true) {DatagramPacket packet = new DatagramPacket(data, data.length);socket.receive(packet);InetAddress address = packet.getAddress(); // 接收到哪个ip发来的数据int port = packet.getPort(); // 对方使用哪个端口发送的if (All.clientMap.containsKey(address.getHostAddress()+"_"+port)) {System.out.println("客户端已经存在");continue;}All.clientMap.put(address.getHostAddress()+"_"+port, null);UDPServerThread serverThread = new UDPServerThread(packet, socket);serverThread.start();System.out.println("客户端数量:" + count++);}}
}
3.维护每个客户端连接
package cn.com.zh.udp;import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;public class UDPServerThread extends Thread{DatagramPacket packet;DatagramSocket socket;public UDPServerThread(DatagramPacket packet, DatagramSocket socket) {super();this.packet = packet;this.socket = socket;}@Overridepublic void run(){try {//获取客户端信息byte[] data = packet.getData();String info1 = new String(data, 0, packet.getLength());System.out.println("我是服务器,客户端说:" + info1);//响应客户端InetAddress address = packet.getAddress(); // 接收到哪个ip发来的数据int port = packet.getPort(); // 对方使用哪个端口发送的while (true) {// TODO do businessThread.sleep(3000);byte[] data1 = ("欢迎您!" + System.currentTimeMillis()).getBytes();DatagramPacket packet1 = new DatagramPacket(data1, data1.length, address, port);socket.send(packet1);}}catch (IOException e) {e.printStackTrace();} catch (InterruptedException e) {throw new RuntimeException(e);}}
}
相关文章:
Unity与java后端UDP通信
1. unity客户端代码: using System.Collections; using System.Collections.Generic; using UnityEngine; using System.Net.Sockets; using System.Net; using System.Threading; using System.Text; using System;public class Udp : MonoBehaviour {static Sock…...
vue3 - swiper插件 实现PC端的 视频滑动功能(仿抖音短视频)
swiper官网 swiper属性/组件查询 vue中使用swiper 步骤: ① npm install swiper 安装 ② 基础模板: <div><swiper class"swiper-box" :direction"vertical":grabCursor"true" :mousewheel"tr…...
简述SVM
概述 SVM,即支持向量机(Support Vector Machine),是一种常见的监督学习算法,用于分类和回归问题。它是一种基于统计学习理论和结构风险最小化原则的机器学习方法。 SVM的主要思想是在特征空间中找到一个最优的超平面…...
【DevOps】Rundeck以及Jenkins
Rundeck是一个DevOps常用的工具,是PagerDuty公司开发的产品,能够很好的和PagerDuty进行集成。 但是平常我们听得或用得更多的是Jenkins,一个非常流行的CI工具,具有很好的可扩展性。 可是为什么那家公司会用Rundeck而不是Jenkins呢…...
数字滤波器分析---零极点分析
数字滤波器分析---零极点分析 zplane 函数绘制线性系统的极点和零点。 例如,在 -1/2 处为零且在 0.9e−j2π0.3 和 0.9ej2π0.3 处有一对复极点的简单滤波器为 zer -0.5; pol 0.9*exp(j*2*pi*[-0.3 0.3]); 要查看该滤波器的零极点图,您可以使用 z…...
HarmonyOS应用开发-网络请求与web组件
前言 当今世界,移动应用已经成为人们日常生活中不可或缺的一部分。无论是社交媒体、新闻、购物还是娱乐,安卓应用的广泛使用已经改变了我们与数字世界互动的方式。然而,这些应用的实际功能远不止界面和用户体验。它们背后的精密技术和网络请…...
频次最高的38道selenium面试题及答案
1、selenium的原理是什么? selenium的原理涉及到3个部分,分别是: 浏览器driver:一般我们都会下载driverclient:也就是我们写的代码 client其实并不知道浏览器是怎么工作的,但是driver知道,在…...
利用MSF设置代理
1、介绍: 通过MSF拿到一个机器的权限后,通过MSF搭建socks代理,然后通内网。 拿到目标权限,有很多方法,比如:①ms17-010 ②补丁漏洞 ③MSF生成后门 在此直接使用MSF生成后门 MSF中有三个代理模块&#x…...
模型剪枝算法——L1正则化BN层的γ因子
ICCV在2017年刊登了一篇经典论文《 Learning Efficient Convolutional Networks through Network Slimming》。在神经网络的卷积操作之后会得到多个特征图,通过策略突出重要的特征达到对网络瘦身的目的。在该论文中使用的剪枝策略就是稀疏化BN层中的缩放因子 。 Bat…...
11.9 知识总结(三板斧、全局配置文件、静态文件的配置、request对象等)
一、 三板斧的使用 三个方法: HttpResponse render redirect def index(request): print(request) # return HttpResponse("request") # 它返回的是字符串 # return render(request, index.html) # 加载HTML页面的 # return redirect(ht…...
CSS 外边距、填充、分组嵌套、尺寸
一、CSS 外边距: CSS margin(外边距)属性定义元素周期的空间。margin清除周围的(外边框)元素区域。margin没有背景颜色,是完全透明的。margin可以单独改变元素的上、下、左、右边距,也可以一次改…...
Exploration by random network distillation论文笔记
Exploration by Random Network Distillation (2018) 随机网络蒸馏探索 0、问题 这篇文章提出的随机网络蒸馏方法与Curiosity-driven Exploration by Self-supervised Prediction中提出的好奇心机制的区别? 猜想:本文是基于随机网络蒸馏提出的intrin…...
Ubuntu22.04配置Go环境
Ubuntu上配置Go环境biCentOS简单多了,有两种方案,一种直接使用apt进行安装,一种自己从官网下载安装包进行安装。 1、使用apt直接安装 更新apt安装包,常规操作 apt update 然后看看apt自带的Go版本是多少 apt list golang 是1…...
Zabbix深入解析与实战
1.Zabbix 1.1.监控概述 监控是指对行为、活动或其他变动中信息的一种持续性关注,通常是为了对人达成影响、管理、指导或保护的目的 监控 监视主机架构状态控制,事后追责目标:早发现早处理(故障、性能、架构) 网站扩容(用数据说话) 为什么要…...
怎么用电脑开发安卓app?能外包吗?
随着智能手机的普及,安卓应用程序的开发需求也越来越高,许多人都想开发自己的安卓应用程序,但苦于缺乏相关知识和技能,本文将介绍如何使用电脑开发安卓应用程序,以及是否可以将开发工作外包给专业的开发团队。 一、了…...
1-前端基本知识-HTML
1-前端基本知识-HTML 文章目录 1-前端基本知识-HTML总体概述什么是HTML?超文本标记语言 HTML基础结构文档声明根标签头部元素主体元素注释 HTML概念词汇:标签、属性、文本、元素HTML基本语法规则HTML常见标签标题标签段落标签换行标签列表标签超链接标签…...
磁盘的分区、格式化、检验与挂载 ---- fdisk,mkfs,mount
磁盘的分区、格式化、检验与挂载 磁盘管理是非常重要的,当我们想要再系统里面新增一块磁盘使用时,应执行如下几步: 对磁盘进行划分,以建立可用的硬盘分区 (fdisk / gdisk)对硬盘分区进行格式化࿰…...
Solr搜索参数详解
Solr 页面搜索 1.1 基本查询 参数意义q查询的关键字,此参数最为重要,例如,qid:1,默认为q:,fl指定返回哪些字段,用逗号或空格分隔,注意:字段区分大小写,例如,…...
Flink(三)【运行时架构】
前言 今天学习 Flink 的一些原理性的东西,比较偏概念,但是十分重要。有人觉得上来框框敲代码才能学到东西,那是狗屁不通的道理(虽然我以前也这么认为)。个人认为,学习 JavaEE那些框架,你上来就敲…...
conda添加清华镜像源
一、conda下载 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 显示所有channel conda config --show channels 二、添加清华镜像源 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://…...
现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...
C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
中医有效性探讨
文章目录 西医是如何发展到以生物化学为药理基础的现代医学?传统医学奠基期(远古 - 17 世纪)近代医学转型期(17 世纪 - 19 世纪末)现代医学成熟期(20世纪至今) 中医的源远流长和一脉相承远古至…...
C#中的CLR属性、依赖属性与附加属性
CLR属性的主要特征 封装性: 隐藏字段的实现细节 提供对字段的受控访问 访问控制: 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性: 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑: 可以…...
Linux 中如何提取压缩文件 ?
Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...
手机平板能效生态设计指令EU 2023/1670标准解读
手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读,综合法规核心要求、最新修正及企业合规要点: 一、法规背景与目标 生效与强制时间 发布于2023年8月31日(OJ公报&…...
在 Spring Boot 项目里,MYSQL中json类型字段使用
前言: 因为程序特殊需求导致,需要mysql数据库存储json类型数据,因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...
通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器
拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件: 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...
深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏
一、引言 在深度学习中,我们训练出的神经网络往往非常庞大(比如像 ResNet、YOLOv8、Vision Transformer),虽然精度很高,但“太重”了,运行起来很慢,占用内存大,不适合部署到手机、摄…...
Java 与 MySQL 性能优化:MySQL 慢 SQL 诊断与分析方法详解
文章目录 一、开启慢查询日志,定位耗时SQL1.1 查看慢查询日志是否开启1.2 临时开启慢查询日志1.3 永久开启慢查询日志1.4 分析慢查询日志 二、使用EXPLAIN分析SQL执行计划2.1 EXPLAIN的基本使用2.2 EXPLAIN分析案例2.3 根据EXPLAIN结果优化SQL 三、使用SHOW PROFILE…...
