Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

UnityからUDPで送信

実際のところ

Unity側

以下のようなスクリプトを用意し、空のゲームオブジェクトに紐づけます。
パラメータとしてIPアドレスとポート番号がでるので、変わるようならUI側で調整してもいいでしょう。

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

public class UDPSender : MonoBehaviour
{
    [SerializeField] private string targetIPAddress = "192.168.1.100"; // デフォルトのIPアドレス
    [SerializeField] private int targetPort = 12345; // デフォルトのポート番号

    private UdpClient udpClient;
    private int spaceKeyPressCount = 0;

    private void Start()
    {
        udpClient = new UdpClient();
    }

    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            spaceKeyPressCount++;
            SendUDPMessage();
        }
    }

    private void SendUDPMessage()
    {
        try
        {
            long unixTime = DateTimeOffset.UtcNow.ToUnixTimeSeconds();
            string message = $"{unixTime},{spaceKeyPressCount}";
            byte[] data = Encoding.UTF8.GetBytes(message);

            udpClient.Send(data, data.Length, targetIPAddress, targetPort);
            Debug.Log($"Sent message: {message} to {targetIPAddress}:{targetPort}");
        }
        catch (Exception e)
        {
            Debug.LogError($"Error sending UDP message: {e.Message}");
        }
    }

    private void OnApplicationQuit()
    {
        if (udpClient != null)
        {
            udpClient.Close();
        }
    }
}

netcatで受信テスト

$ nc -ulv 9606