unity Sockets通信 使用UDP协议,设置客户端电脑网络配置,使用新线程获取数据,解决卡顿问题,

这篇具有很好参考价值的文章主要介绍了unity Sockets通信 使用UDP协议,设置客户端电脑网络配置,使用新线程获取数据,解决卡顿问题,。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

今天调试和服务器连接,发现始终获取不到服务器的数据,
电脑和服务器都在同一局域网,仍然获取不到,
下面是电脑环境配置,
第一步:
设置网络为专用网络,然后点击配置防火墙和安全设置,关闭防火墙
(点击所连接的wifi的属性)
unity udp接收数据,udp,unity,网络协议

第二步:设置出站 入站规则
点击高级设置,入站规则—创建:选择端口—选择UDP,所有本地端口,–允许连接—三个都勾选—起个名字如UDP连接
出站规则 和入站规则操作步骤一样

unity udp接收数据,udp,unity,网络协议

unity udp接收数据,udp,unity,网络协议

现在运行看看是否已经可以获取服务器数据了,

如果还未获取到,就需要设置自己的IP 地址为固定的了
unity udp接收数据,udp,unity,网络协议
然后点击详细信息,拍照记住IPV4地址、IPV4子网掩码。IPv4网关,然后关闭
点击属性
unity udp接收数据,udp,unity,网络协议

把刚才记录的东西 按下图以此填写设置,
unity udp接收数据,udp,unity,网络协议

//然后在Sockets 通信代码中 绑定的IP 使用自己的IP,
 IPAddress ipAddress = IPAddress.Parse("自己电脑的IP");

下面时UDP代码文章来源地址https://www.toymoban.com/news/detail-731570.html

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.Rendering.Universal;
using UnityEngine.UI;



public class ClientHandlerUDP : MonoBehaviour
{
   

    IPAddress ipAddress;
    private const int Port = 服务器端口号;
    static Socket receiverSocket;
    static EndPoint remoteEndPoint;

    Thread thread;
    public void Start()
    {

         设置服务器IP和端口

        string json = CreatFile(Application.streamingAssetsPath + "/IP", "IP.json");//IP地址放到了一个json文件里,方便在其他电脑上配置
        IPClass ip = JsonUtility.FromJson<IPClass>(json);
        
         ipAddress = IPAddress.Parse(ip.ip);
        Debug.Log($"IP和端口号,ip{ip.ip},,,端口号:{Port}");

        StartUpd();


    }
    public void StartUpd()
    {

        IPEndPoint localEndPoint = new IPEndPoint(ipAddress, Port);
        remoteEndPoint = new IPEndPoint(IPAddress.Any, 0);
        try
        {
            Debug.Log("创建UDP Socket");
            // 创建UDP Socket
            receiverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);


            Debug.Log($"绑定IP和端口号");
            // 将Socket绑定到本地IP和端口
            receiverSocket.Bind(localEndPoint);
            thread = new Thread(ThreadUpdate);//使用新线程,可以有效防止 获取数据时 运行太卡的问题,
            thread.Start();

            Debug.Log("UDP接收器已启动,等待接收消息...");



        }
        catch (Exception ex)
        {
            Debug.Log(string.Format("发生异常: {0}", ex.Message));
        }
    }


    bool isThreadRunning = true;
    public void ThreadUpdate()
    {
        if (isThreadRunning)
        {
            Debug.Log("线程开启");
            while (true)
            {
                byte[] buffer = new byte[1024];
                Debug.Log("准备接收消息");
                int bytesRead = receiverSocket.ReceiveFrom(buffer, ref remoteEndPoint);

                string message = Encoding.ASCII.GetString(buffer, 0, bytesRead);

                Debug.Log(string.Format("接收到来自 {0} 的消息: {1}", remoteEndPoint.ToString(), message));
               
                Thread.Sleep(1000);
            }
        }

    }
    // 关闭新线程
    private void StopThread()
    {
        // 在主线程中修改标志变量的值
        isThreadRunning = false;
        if (thread == null) return;
        // 等待新线程结束
        thread.Abort();
    }
    public void OnDisable()
    {
        StopThread();
    }
    private string CreatFile(string filePath, string fileName)
    {
        string fullPath = Path.Combine(filePath, fileName);
        if (!Directory.Exists(filePath))
        {
            Directory.CreateDirectory(filePath);
        }
        if (!File.Exists(fullPath))
        {
            FileStream fs1 = new FileStream(fullPath, FileMode.Create);
            fs1.Flush();
            fs1.Close();
        }

        byte[] byets = File.ReadAllBytes(fullPath);
        return Encoding.UTF8.GetString(byets);
    }
}
[Serializable]
public class IPClass
{
    public string ip;
}

到了这里,关于unity Sockets通信 使用UDP协议,设置客户端电脑网络配置,使用新线程获取数据,解决卡顿问题,的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 服务端和客户端通信--UDP(含完整源代码)

    实验设备:     目标系统:Windows 软件工具:vs2022/vc6/dev   实验要求: 完成UDP服务端和客户端的程序编写; 分别实现UDP一对一通信和广播通信功能。 实验内容: -static-libgcc 一对一通信 : 1 、加载/释放Winsock库,创建套接字(WSAStartup()/socket())。 加载方法: WSADATA wsa; /*初始化

    2024年02月14日
    浏览(55)
  • Unity解决Udp客户端无法接收数据的问题

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

    2024年01月17日
    浏览(55)
  • Unity使用webSocket与服务器通信(三)——C#服务端(Fleck)与Unity客户端( NativeWebSocket)传输多种数据数据

    1、字符串数据 简单的字符串:比如登录请求信息,登录结果返回的信息。 用json系列化的字符串:比如上传一个表到服务器,让它写入到数据库中。 读取文件的时候,读取的是string内容。 2、二进制数据 比如传输的是文件:例如myword.doc,myexcel.xls或者是assetboundle文件。 比如

    2023年04月08日
    浏览(54)
  • 【Java网络编程】基于UDP-Socket 实现客户端、服务器通信

    ​ 哈喽,大家好~我是你们的老朋友: 保护小周ღ   本期为大家带来的是网络编程的 UDP Socket 套接字,基于 UDP协议的 Socket 实现客户端服务器通信 ,Socket 套接字可以理解为是,传输层给应用层提供的一组 API,如此程序,确定不来看看嘛~~ 本期收录于博主的专栏 : JavaEE_保

    2024年02月02日
    浏览(71)
  • C# Socket通信从入门到精通(12)——多个同步UDP客户端C#代码实现

    我们在开发Udp客户端程序的时候,有时候在同一个软件上我们要连接多个服务器,这时候我们开发的一个客户端就不够使用了,这时候就需要我们开发出来的软件要支持连接多个服务器,最好是数量没有限制,这样我们就能应对任意数量的服务器连接,由于我们开发的Udp客户

    2024年02月04日
    浏览(59)
  • C# Socket通信从入门到精通(14)——多个异步UDP客户端C#代码实现

    在之前的文章C# Socket通信从入门到精通(13)——单个异步UDP客户端C#代码实现我介绍了单个异步Udp客户端的c#代码实现,但是有的时候,我们需要连接多个服务器,并且对于每个服务器,我们都有一些比如异步发送、异步接收的操作,那么这时候我们使用之前单个异步Udp客户

    2024年02月03日
    浏览(81)
  • C# Socket通信从入门到精通(16)——单个同步UDP服务器监听多个客户端C#代码实现

    我们在开发UDP通信程序时,有时候我们也需要开发UDP服务器程序,这个服务器只需要和一个客户端实现通信,比如这篇博文C# Socket通信从入门到精通(15)——单个同步UDP服务器监听一个客户端C#代码实现,但是在实际项目中有的时候需要和多个客户端进行通信,这时和一个客

    2024年01月22日
    浏览(64)
  • C# Socket通信从入门到精通(15)——单个同步UDP服务器监听一个客户端C#代码实现

    我们在开发UDP通信程序时,除了开发UDP客户端程序,有时候我们也需要开发UDP服务器程序,这在实际项目中是经常会遇到的,所以说掌握UDP服务器程序的开发是一项必备的技能,尤其在上位机软件开发领域,掌握UDP服务器程序的开发是走向高级工程师的必经之路,也是面试必

    2024年02月03日
    浏览(60)
  • 【Java】网络编程与Socket套接字、UDP编程和TCP编程实现客户端和服务端通信

    为什么需要网络编程? 现在网络普及程序越来越高,网络上保存着我们日常生活中需要的各种资源,使用程序通过网络来获取这些资源的过程就需要网络编程来实现。 什么是网络编程? 网络编程,指网络上的主机,通过不同的进程以程序的方式实现网络通信(网络数据传输)

    2024年02月17日
    浏览(79)
  • C++网络通信实例(TCP/IP协议,包括服务端与客户端通信)

    创作不易 觉得有帮助请点赞关注收藏 TCP/IP是当下网络协议栈中的主流协议 TCP属于传输层的协议  可靠传输 包括经典的三次握手等等 IP协议是网络层协议 尽全力传输但不可靠 学过计算机网络的同学们对这个应该比较熟悉 以下是使用C++进行网络通信的实例  服务端 主要使用

    2024年02月14日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包