У меня есть проект, в котором у меня на телефоне Android есть приложение wireless IMU .Основываясь на описании приложения, оно отправляет данные ускорения / гироскопа в формате csv по UDP на целевой IP-адрес и порт.
В настоящее время я пытаюсь закодировать UDPListener в Unity, который получает эти данные.
using UnityEngine;
using UnityEngine.Networking;
using System;
using System.Collections;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Collections.Generic;
using System.Linq;
public class UDPReceiver1 : MonoBehaviour
{
Thread udpListeningThread;
public int portNumberReceive;
UdpClient receivingUdpClient;
string[] delimiters = { ", ", "," };
string[] data;
void Start()
{
initListenerThread();
}
void initListenerThread()
{
Debug.Log("Started on : " + portNumberReceive.ToString());
udpListeningThread = new Thread(new ThreadStart(UdpListener));
// Run in background
udpListeningThread.IsBackground = true;
udpListeningThread.Start();
}
public void UdpListener()
{
receivingUdpClient = new UdpClient(portNumberReceive);
while (true)
{
//Listening
try
{
IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);
// Blocks until a message returns on this socket from a remote host.
byte[] receiveBytes = receivingUdpClient.Receive(ref RemoteIpEndPoint);
if (receiveBytes != null)
{
string returnData = Encoding.UTF8.GetString(receiveBytes);
Debug.Log("Message Received" + returnData.ToString());
Debug.Log("Address IP Sender" + RemoteIpEndPoint.Address.ToString());
Debug.Log("Port Number Sender" + RemoteIpEndPoint.Port.ToString());
data = returnData.Split(delimiters, StringSplitOptions.None);
Debug.Log(data);
}
}
catch (Exception e)
{
Debug.Log(e.ToString());
}
}
}
void OnDisable()
{
if (udpListeningThread != null && udpListeningThread.IsAlive)
{
udpListeningThread.Abort();
}
receivingUdpClient.Close();
}
}
На данный момент этот код вообще не работает, и я был очень озадачен, почему он не работает.Похоже, что многие форумы имеют одинаковую структуру, и код кажется логичным.
Когда я тестировал соединение, я подключал этот скрипт к игровому объекту, устанавливал произвольный номер порта, например, «12345», иИграть.Тем временем я запустил приложение на своем телефоне Android с целевым IP-адресом, являющимся IP-адресом компьютера, и целевым номером порта, являющимся тем же номером порта, который я использовал ранее.
Я был бы очень признателен, если бы какая-нибудь добрая душа моглапомогите, так как я застрял здесь на две недели; (