티스토리 뷰

유니티(unity)

[C#/Unity] UDP 기본 코드

개발자 고포고 2024. 1. 31. 16:47
반응형

 

UDP 기본 코드

using System.Collections.Generic;
using UnityEngine;
using System.Net;
using System.Net.Sockets;
using System.Text;

public class UDPReceiver : MonoBehaviour
{
    private UdpClient udpClient;
    private int port = 7777;
    private Queue<string> messageQueue = new Queue<string>();

    void Start()
    {
        udpClient = new UdpClient(port);
        BeginReceive();
    }

    private void BeginReceive()
    {
        udpClient.BeginReceive(ReceiveCallback, null);
    }

    private void ReceiveCallback(IAsyncResult ar)
    {
        IPEndPoint remoteEP = new IPEndPoint(IPAddress.Any, port);
        byte[] bytesReceived = udpClient.EndReceive(ar, ref remoteEP);

        string message = Encoding.UTF8.GetString(bytesReceived);

        lock (messageQueue)
        {
            messageQueue.Enqueue(message);
        }

        BeginReceive();
    }

    void Update()
    {
        lock (messageQueue)
        {
            if (messageQueue.Count > 0)
            {
                string message = messageQueue.Dequeue();

                if (message.Contains("11"))
                {
                    Debug.Log("받은 메시지: " + message);
                    StartCoroutine(ChangeGroup(1));
                }
                else if (message.Contains("12"))
                {
                    Debug.Log("받은 메시지: " + message);
                    StartCoroutine(ChangeGroup(0));
                }
            }
        }
    }

    IEnumerator ChangeGroup(int group)
    {
        // 코루틴의 내용
        yield return null;
    }

    void OnDestroy()
    {
        udpClient.Close();
    }
}

 

#Unity #유니티 #C# #wpf

반응형
댓글
반응형