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://…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...
html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...
JS设计模式(4):观察者模式
JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中࿰…...
【笔记】WSL 中 Rust 安装与测试完整记录
#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...
AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机
这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机,因为在使用过程中发现 Airsim 对外部监控相机的描述模糊,而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置,最后在源码示例中找到了,所以感…...
