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

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客户端发送数据,发现客户端已经可以接收到服务器发送过来的数据了。
在这里插入图片描述

相关推荐

  1. TCP、UDP客户

    2024-01-17 10:58:01       16 阅读
  2. Qt进程间通信QLocalSocket客户无法接收消息

    2024-01-17 10:58:01       6 阅读
  3. 【Linux】基于Udp简易服务客户

    2024-01-17 10:58:01       14 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-17 10:58:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-17 10:58:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-17 10:58:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-17 10:58:01       18 阅读

热门阅读

  1. Python函数进阶:作为参数传递、作为返回值

    2024-01-17 10:58:01       35 阅读
  2. 企业如何判断定岗定编是否合理?

    2024-01-17 10:58:01       31 阅读
  3. 对接百度API的银行卡四要素校验

    2024-01-17 10:58:01       36 阅读
  4. python logging 日志模块保证输出不踩踏

    2024-01-17 10:58:01       35 阅读
  5. 如何用python连接mysql和mongodb数据库【极简版】

    2024-01-17 10:58:01       28 阅读
  6. Golang 如何基于现有的 context 创建新的 context?

    2024-01-17 10:58:01       31 阅读
  7. [蓝桥杯 2016 省 AB] 四平方和

    2024-01-17 10:58:01       31 阅读
  8. MCU 是指微控制器单元(Microcontroller Unit)

    2024-01-17 10:58:01       30 阅读
  9. STM32F103C8驱动MPU6050姿态与tofsense报警 (一)

    2024-01-17 10:58:01       28 阅读
  10. 2024.1.16 GCC 编译选项 屏蔽某些警告 CMAKE_CXX_FLAGS

    2024-01-17 10:58:01       29 阅读
  11. 【力扣每日一题】力扣2744最大字符串配对数目

    2024-01-17 10:58:01       43 阅读
  12. ubuntu禁用/启用图形界面

    2024-01-17 10:58:01       24 阅读
  13. 代码随想录 42. 接雨水

    2024-01-17 10:58:01       28 阅读