Unity解决Udp客户端无法接收数据的问题

news/2024/7/23 19:27:45 标签: unity, 游戏引擎

Unity解决Udp客户端无法接收数据的问题

在我之前做过的项目中,其中不少涉及Udp客户端的项目。在这些项目中,一般只需要实现客户端向服务器端发送数据的功能就可以了,一般都不用接收服务器端发送的数据,但是也有同学使用了我分享的udp客户端插件,说是接收不到服务器端发送的数据。我也一直没时间修改这个bug,最近有一个需要使用Udp客户端接收服务端数据的功能,趁着这个机会我把这个bug修复了,分享在下面。

修改

1.代码修改主要修改两个地方,如下所示:

 //初始化
    void InitSocket()
    {
        //定义连接的服务器ip和端口,可以是本机ip,局域网,互联网
        ipSend = new IPEndPoint(IPAddress.Parse(thisIP), localPort);
        //ipSend = new IPEndPoint(IPAddress.Parse("192.168.1.200"),50000);
        //定义套接字类型,在主线程中定义
        socketSend = new UdpClient();
        //定义服务端
        //定义侦听端口,侦听任何IP
        ipReceive = new IPEndPoint(IPAddress.Any, 0);
        //定义套接字类型,在主线程中定义
        socketReceive = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
        //服务端需要绑定ip
        socketReceive.Bind(ipReceive);
        //定义客户端
        IPEndPoint senderReceive = new IPEndPoint(IPAddress.Any, 0);
        serverEnd = (EndPoint)senderReceive;
        clientEnds = new List<EndPoint>();
        //开启一个线程连接,必须的,否则主线程卡死
        connectThread = new Thread(new ThreadStart(SocketReceive));
        connectThread.Start();
    }

2.再一处就是接收数据的方法,代码如下所示:

/// <summary>
    /// 服务器接收
    /// </summary>
    void SocketReceive()
    {
        //进入接收循环
        while (true)
        {
            recvData = new byte[1024];
            //获取客户端,获取客户端数据,用引用给客户端赋值
            recvLen = socketReceive.ReceiveFrom(recvData, ref serverEnd);
            print("message from: " + serverEnd.ToString()); //打印客户端信息
            //输出接收到的数据
            recvStr = Encoding.UTF8.GetString(recvData, 0, recvLen);
            Debug.Log(recvStr);

        }
    }

3.修改完成,运行程序,使用服务器向Udp客户端发送数据,发现客户端已经可以接收到服务器发送过来的数据了。
在这里插入图片描述


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

相关文章

前端踩坑之——antDesignVue的upload组件

本地启动时控制台会报404&#xff0c;放到服务器上控制台会报405(多发一个请求) 原因&#xff1a;upLoad有默认的上传事件 解决&#xff1a;阻止默认事件即可 beforeUpload Hook function which will be executed before uploading. Uploading will be stopped with false or …

java版微信小程序商城 免 费 搭 建 java版直播商城平台规划及常见的营销模式有哪些?电商源码/小程序/三级分销

涉及平台 平台管理、商家端&#xff08;PC端、手机端&#xff09;、买家平台&#xff08;H5/公众号、小程序、APP端&#xff08;IOS/Android&#xff09;、微服务平台&#xff08;业务服务&#xff09; 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis …

序章 熟悉战场篇—了解vue的基本操作

了解vue 的基本目录&#xff1a; dist 是打包后存放的目录(打包目录后续可以改)node_modules 是依赖包public 是静态index页面src 是存放文件的目录assets 是存放静态资源的目录components 是存放组件的目录views 是存放页面文件的目录&#xff08;没有views 自己新建一个&…

Grafana(二)Grafana 两种数据源图表展示(json-api与数据库)

一. 背景介绍 在先前的博客文章中&#xff0c;我们搭建了Grafana &#xff0c;它是一个开源的度量分析和可视化工具&#xff0c;可以通过将采集的数据分析、查询&#xff0c;然后进行可视化的展示&#xff0c;接下来我们重点介绍如何使用它来进行数据渲染图表展示 Docker安装G…

Vue3响应式系统(三)

Vue3响应式系统(二)https://blog.csdn.net/qq_55806761/article/details/135612738 七、无限递归循环。 响应式系统里无限递归也是需要考虑到的。 什么情况会出现无限递归循环&#xff1f; 代码示例&#xff1a; const data { foo: 1 } const obj new Proxy(/* * */) effe…

生成对抗网络GAN(MNIST实现、时间序列实现)

生成对抗网络 生成对抗网络介绍MNIST—GANConditional GAN (CGAN)—时间序列预测 生成对抗网络介绍 生成对抗网络&#xff08;Generative Adversarial Network&#xff0c;简称GAN&#xff09;是一种深度学习模型&#xff0c;由Ian Goodfellow等人于2014年提出。它由两个主要组…

.Net 全局过滤,防止SQL注入

问题背景&#xff1a;由于公司需要整改的老系统的漏洞检查&#xff0c;而系统就是没有使用参数化SQL即拼接查询语句开发的程序&#xff0c;导致漏洞扫描出现大量SQL注入问题。 解决方法&#xff1a;最好的办法就是不写拼接SQL&#xff0c;改用参数化SQL&#xff0c;推荐新项目…

美国智库发布《用人工智能展望网络未来》的解析

文章目录 前言一、人工智能未来可能改善网络安全的方式二、人工智能可能损害网络安全的方式三、人工智能使用的七条建议四、人工智能的应用和有效使用AI五、安全有效地使用人工智能制定具体建议六、展望网络未来的人工智能&#xff08;一&#xff09;提高防御者的效率&#xff…