⭐Unity 搭建UDP客户端(01) 配合网络调试助手测试

news/2024/5/18 14:41:58 标签: 网络, unity, udp

1.接收来自服务器的消息

using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using UnityEngine;

public class UDPManager:MonoBehaviour
{
    public string recvStr; //服务器返回值
    public string UDPClientAddRess = "192.168.2.39"; //目标服务器地址
    public int UDPClientPort = 8080; //目标服务器端口号
    Socket socket;
    EndPoint serverEnd;
    IPEndPoint ipEnd;
    byte[] recvData = new byte[1024];
    byte[] sendData = new byte[1024];
    int recvLen = 0;
    Thread connectThread;
    /// <summary>
    /// 想服务器发送数据
    /// </summary>
    /// <param name="message"></param>
    public void InitSocket(string message)
    {
        Debug.Log(message);
        UDPClientAddRess = UDPClientAddRess.Trim();
        ipEnd = new IPEndPoint(IPAddress.Parse(UDPClientAddRess), UDPClientPort);
        socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
        IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
        serverEnd = sender;
        Debug.Log("等待链接");
        SocketSend(message);
        Debug.Log("连接成功");
        connectThread = new Thread(new ThreadStart(SocketReceve));
        connectThread.Start();
    }
    /// <summary>
    /// 想服务端发送需要发送的内容
    /// </summary>
    /// <param name="sendMessage"></param>
    public void SocketSend(string sendMessage)
    {
        //首先清空所有
        sendData = new byte[1024];
        //转换数据
        sendData = Encoding.UTF8.GetBytes(sendMessage);
        //将数据发送到服务端
        socket.SendTo(sendData, sendData.Length, SocketFlags.None, ipEnd);
    }
    /// <summary>
    /// 接收来自服务端的消息
    /// </summary>
    void SocketReceve()
    {
        while (true)
        {
            recvData = new byte[1024];
            try
            {
                recvLen = socket.ReceiveFrom(recvData, ref serverEnd);
            }
            catch (System.Exception e)
            {
                Debug.LogError("出现异常,异常信息:" + e);
            }
            Debug.Log("收到信息,信息来自:" + serverEnd.ToString());
            if (recvLen > 0)
            {
                recvStr = Encoding.UTF8.GetString(recvData, 0, recvLen);
               
                Debug.Log(recvStr);
               
            }
            else
            {
                Debug.LogError("出现错误,请检查网络链接是否正常");
            }
        }
    }

    /// <summary>
    /// 关闭与服务器的连接
    /// </summary>
    public void SocketQuit()
    {
        //如果线程还在就需要关闭线程
        Debug.Log("销毁UDP");
        if (connectThread != null)
        {
            connectThread.Interrupt();
            connectThread.Abort();
        }
        //最后关闭socket
        if (socket != null)
        {
            socket.Close();
        }
    }
}

2.给服务器发送消息


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

相关文章

Nginx命令---启动nginx

介绍 使用命令启动nginx。 命令 nginx目录/bin/nginx

Tmux中使用Docker报错 - 解决方案

问题 进入Tmux会话后&#xff0c;在其中使用Docker可能会出现如下报错&#xff1a; Got permission denied while trying to connect to the Docker ……解决方案 退出tmux会话: tmux detach在tmux会话外部杀掉tmux进程&#xff1a; pkill -f tmux重新进入tmux&#xff1a…

PPT插件-好用的插件-超级对齐-大珩助手

超级对齐 包含对齐幻灯、对齐对象、对齐文本三个层级&#xff0c;可共用水平分布、垂直分布、交换位置、统一尺寸、垂直居中、水平居中、绝对居中、靠左对齐、靠右对齐、靠上对齐、靠下对齐 可配合图形缩放使用 可配合文本打散使用 可配合素材库中的一键替换使用 选中场景中的…

【数据结构】栈和队列超详解!(Stack Queue)

文章目录 前言一、栈1、栈的基本概念2、栈的实现&#xff08;数组实现&#xff09;3、栈的基本操作3.1 栈的结构设计3.2 栈常见的基本函数接口 4、栈的实现4.1 初始化栈4.2 栈的销毁4.3 入栈4.4 出栈4.5 判空4.6 长度4.7 获取栈顶元素 完整代码Stack.hStack.cTest.c 二、队列1、…

SQL语句的执行顺序怎么理解?

SQL语句的执行顺序怎么理解&#xff1f; 我们常常会被SQL其书写顺序和执行顺序之间的差异所迷惑。理解这两者的区别&#xff0c;对于编写高效、可靠的SQL代码至关重要。今天&#xff0c;让我们用一些生动的例子和场景来深入探讨SQL的执行顺序。 一、书写顺序 VS 执行顺序 SQ…

selenium自动化测试:xpath八种定位方式!

01、前言 如果可以的话&#xff0c;请先关注&#xff08;专栏和账号&#xff09;&#xff0c;然后点赞和收藏&#xff0c;最后学习和进步。你的支持是我继续写下去的最大动力&#xff0c;个人定当倾囊而送&#xff0c;不负众望。谢谢&#xff01;&#xff01;&#xff01; 1.…

JavaScript常用技巧专题二

文章目录 一、前言二、生成随机字符串三、转义HTML特殊字符四、单词首字母大写五、将字符串转换为小驼峰六、删除数组中的重复值七、移除数组中的假值八、获取两个数字之间的随机数九、将数字截断到固定的小数点十、日期10.1、计算两个日期之间天数10.2、从日期中获取是一年中的…

【人生苦短,我学 Python】(5)集合数据类型(set、frozenset)

目录 简述 / 前言1. set数据类型&#xff08;集合&#xff09;1.1 创建集合对象1.1.1 set1.1.2 frozenset 1.2 访问集合元素1.3 集合的长度、最大值、最小值、元素和1.4 集合支持的运算1.5 集合对象方法 文章传送门 简述 / 前言 前面主要了解了 Python 的语言基础&#xff0c;…