unity 接收和发送Udp消息

因为需要用到unity和其他的程序交互,其他程序可以提供Udp消息,因此找了合适的相互连接方法。这里直接上代码。

工具类:

using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using UnityEngine;
using UnityEngine.Video;public class UdpManager
{public static string m_receivedMessage;static IPEndPoint m_IPEndPoint;static UdpClient m_udpClient;public static void InitializeUdpClient(){m_IPEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8080);m_udpClient = new UdpClient(m_IPEndPoint);UdpModel s = new UdpModel(m_udpClient, m_IPEndPoint);m_udpClient.BeginReceive(EndReceive, s);Debug.Log("服务器启动");}//结束得到的信息private static void EndReceive(IAsyncResult ar){try{UdpModel m_UdpModel = ar.AsyncState as UdpModel;if (m_UdpModel != null){UdpClient udpClient = m_UdpModel.m_udpclient;IPEndPoint ip = m_UdpModel.m_ip;Byte[] receiveBytes = udpClient.EndReceive(ar, ref ip);string msg = Encoding.UTF8.GetString(receiveBytes);m_receivedMessage = msg;udpClient.BeginReceive(EndReceive, m_UdpModel); //开始获取}}catch (Exception ex){//处理异常}}//udp模型private class UdpModel{public UdpClient m_udpclient = null;public IPEndPoint m_ip;public UdpModel(UdpClient udpclient, IPEndPoint ip){this.m_udpclient = udpclient;this.m_ip = ip;}}//关闭public static void Close(){if (m_udpClient != null){m_udpClient.Close();m_udpClient = null;}}/// <summary>/// 发送数据/// </summary>/// <param name="obj"></param>public static void SendMessage(string message){UdpClient myUdpClient = new UdpClient();IPEndPoint endpoint;//当前服务器ip和端口号myUdpClient = new UdpClient(new IPEndPoint(IPAddress.Any, 8800));//要发送给的地址和端口号,255.255.255.255表示在这个局域网的所有ipendpoint = new IPEndPoint(IPAddress.Parse("192.168.31.174"), 1180);byte[] bytes = Encoding.UTF8.GetBytes(message);try{myUdpClient.Send(bytes, bytes.Length, endpoint);myUdpClient.Close();}catch (Exception err){Console.Write(err.Message, "发送失败");}finally{myUdpClient.Close();}}
}

需要挂载运行的脚本:

using System.Collections.Generic;
using UnityEngine.UI;
using UnityEngine;
using UnityEngine.Video;/// <summary>
/// 服务接收生成
/// </summary>
public class ServerControl : MonoBehaviour
{void Start(){UdpManager.InitializeUdpClient();//part1Root.SetActive(true);//part2Root.SetActive(false);}void Update(){if (UdpManager.m_receivedMessage != null){string[] array = UdpManager.m_receivedMessage.Split(',');Debug.Log(UdpManager.m_receivedMessage);UdpManager.m_receivedMessage = null;}}private void OnDestroy(){UdpManager.Close();}
}

使用方法很简单,把ServerControl脚本挂载在一个物体上,直接运行即可,接受信息的方法和发送的方法都在两个脚本里。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/137092.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Xcode 最好用的 11 个快捷键

今天来分享一下我觉得很好用的 Xcode 12 个快捷键 1. Command Shift O 快速打开&#xff0c;可让你快速导航到项目中的任何文件、函数、变量 2. Command Shift J 快速定位到当前代码所在的文件夹位置&#xff0c;并切换到项目导航器中显示 3. Command Shift Y 快速…

2011年03月31日 Go生态洞察:Godoc —— Go代码的文档化

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

Oracle数据库调优实战:优化SQL查询的黄金法则!

在数据库应用中&#xff0c;SQL查询是最常见且最频繁执行的操作之一。然而&#xff0c;当数据量庞大、查询复杂度高时&#xff0c;SQL查询性能可能变得低效。为了提高数据库的响应速度和吞吐量&#xff0c;我们需要进行SQL查询的优化。下面将介绍Oracle数据库调优的黄金法则&am…

微前端:quankun

零&#xff1a; 前言 微前端可以将大应用拆分功能独立的微应用&#xff0c;可独立开发部署&#xff0c; 每个微应用可以采用自己的技术栈&#xff0c;这样更好维护和拓展。微前端也会存在跨域 权限控制 数据共享 性能(页面加载时间) 安全 多团队协作(一个团队负责一个页面或模…

list部分接口模拟实现(c++)

List list简介list基本框架list构造函数list_node结构体的默认构造list类的默认构造 push_back()iteartor迭代器迭代器里面的其他接口const迭代器通过模板参数实现复用operator->() insert()erase()clear()析构函数迭代器区间构造拷贝构造operator() list简介 - list可以在…

【Java】本地开发环境正常、测试或生产环境获取的文件路径不对的问题

引 Java 中经常获取本地文件或者resource下的文件&#xff0c;要获取文件&#xff0c;首先要获得本地路径。 Java 本身或一些开源工具包都提供了很多获取路径的方法。但使用时经常遇到本地开发环境正常、测试或生产环境获取的文件路径不对的问题。 本文将列出几种常见的获取…

python开发过程中注意编码规范~

文章目录 一、 代码编排二、 文档编排三、 空格的使用四、 注释五、 文档描述六、 命名规范总体原则&#xff0c;新编代码必须按下面命名风格进行&#xff0c;现有库的编码尽量保持风格。七 编码建议关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、…

【三维重建】摄像机几何

针孔相机模型 为了方便我们对针孔相机模型进行数学建模&#xff0c;我们往往对虚拟像平面进行研究&#xff0c;因为虚拟像平面的方向与我们实际物体的方向一致。 通过相似三角形法可以得到三维坐标到二维坐标映射 将像平面原点坐标移动到左下角&#xff1a; 加上现实世界单位&a…

Vue中的$nextTick有什么作用?

一、NextTick是什么 官方对其的定义 在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法&#xff0c;获取更新后的 DOM 什么意思呢&#xff1f; 我们可以理解成&#xff0c;Vue 在更新 DOM 时是异步执行的。当数据发生变化&#xff0c;Vue将开启一个异…

【神经网络】【GoogleNet】

1、引言 卷积神经网络是当前最热门的技术&#xff0c;我想深入地学习这门技术&#xff0c;从他的发展历史开始&#xff0c;了解神经网络算法的兴衰起伏&#xff1b;同时了解他在发展过程中的**里程碑式算法**&#xff0c;能更好的把握神经网络发展的未来趋势&#xff0c;了解神…

【Linux笔记】Linux环境变量与地址空间

【Linux笔记】Linux环境变量与地址空间 一、命令行参数1.1、main函数的参数1.2、main函数的第三个参数 二、环境变量的概念与内容2.1、环境变量的概念2.2、环境变量的分类2.3、环境变量的组织形式2.4、常见的环境变量 三、设置环境变量3.1、通过命令获取或设置环境变量3.2、通过…

补偿 FIR 滤波器引入的延迟

补偿 FIR 滤波器引入的延迟 对信号进行滤波会引入延迟。这意味着相对于输入&#xff0c;输出信号在时间上有所偏移。此示例向您说明如何抵消这种影响。 有限冲激响应滤波器经常将所有频率分量延迟相同的时间量。这样&#xff0c;我们就很容易通过对信号进行时移处理来针对延迟…

SMART PLC模拟量上下限报警功能块(梯形图代码)

博途PLC模拟量偏差报警功能块请参考下面的文章链接: 模拟量偏差报警功能块(SCL代码)_RXXW_Dor的博客-CSDN博客文章浏览阅读594次。工业模拟量采集的相关基础知识,可以查看专栏的系列文章,这里不再赘述,常用链接如下:PLC模拟量采集算法数学基础(线性传感器)_plc傳感器數…

目标检测算法 - YOLOv1

文章目录 1. 作者简介2. 目标检测综述3. YOLOv1算法3.1 预测阶段3.2 预测阶段后处理3.3 训练阶段 YOLO的全称是you only look once&#xff0c;指只需要浏览一次就可以识别出图中的物体的类别和位置。 YOLO是目标检测模型。目标检测是计算机视觉中比较简单的任务&#xff0c;用…

Pytorch实战教程(二十七)-基于ResNet模型实现猫狗分类

0. 前言 从 VGG11 到 VGG19,不同之处仅在于网络层数,一般来说,神经网络越深,它的准确率就越高。但并非仅增加网络层数,就可以获得更准确的结果,随着网络层数的增加可能会出现以下问题: 梯度消失和爆炸:在网络层次过深的情况下,反向传播可能会面临梯度消失和爆炸的问题…

OpenHarmony创新赛|赋能直播第五期

OpenHarmony创新赛赋能直播课程即将再次与大家见面&#xff01;本期基于之前的青蛙影院的UI界面设计的课程&#xff0c;介绍综合性APP的需求介绍和技术栈整合等内容。此外&#xff0c;课程同步赋能OpenHarmony创新赛&#xff0c;为参赛开发者带来新的思路和方法&#xff0c;也欢…

卷积神经网络中 6 种经典卷积操作

深度学习的模型大致可以分为两类&#xff0c;一类是卷积神经网络&#xff0c;另外一类循环神经网络&#xff0c;在计算机视觉领域应用最多的就是卷积神经网络&#xff08;CNN&#xff09;。CNN在图像分类、对象检测、语义分割等经典的视觉任务中表现出色&#xff0c;因此也早就…

【Python3】【力扣题】242. 有效的字母异位词

【力扣题】题目描述&#xff1a; 【Python3】代码&#xff1a; 1、解题思路&#xff1a;若字符串长度相同&#xff0c;依次遍历元素&#xff0c;比较两个字符串的该元素个数是否相同。【耗时长】 知识点&#xff1a;len(...)&#xff1a;获取序列&#xff08;字符串、列表等&…

【uniapp】通用列表封装组件

uniapp页面一般都会有像以下的列表页面&#xff0c;封装通用组件&#xff0c;提高开发效率&#xff1b; &#xff08;基于uView前端框架&#xff09; 首先&#xff0c;通过设计图来分析一下页面展示和数据结构定义 w-table组件参数说明 参数说明类型可选值默认值toggle列表是…

postgresql字段长度修改和数据重写

1 创建表查询日志 #创建表 postgres# create table t(id numeric(5)); CREATE TABLE postgres# select t::regclass::oid;oid -------50032 (1 row)#查看wal日志 [pg13sdw2 pg_wal]$ pg_waldump 0000000100000006000000A2 rmgr: Standby len (rec/tot): 50/ 50, …