tcp / ip получает байты и конвертирует в текстуру - PullRequest
0 голосов
/ 06 июня 2018

У меня небольшая проблема с этим.У меня есть другая программа / программное обеспечение, которое преобразует изображение в байты и отправляет их дальше.Теперь мне нужно перехватить эти байты в Unity , преобразовать их обратно в изображение и установить в качестве текстуры.

Я уже установил соединение с другим программным обеспечением через TCP / IP система, соединение работает, другое программное обеспечение отправляет данные, но я понятия не имею, как преобразовать эти байты в img.

Debug.Log("client message received as: " + clientMessage);

- это всего лишь тест, поэтому я вижу, что данные поступают.

Вот мой код

 img.LoadRawTextureData(Loader);
 img.Apply();
 GameObject.Find("Plane").GetComponent<Renderer>().material.mainTexture = img;

//

private void ListenForIncommingRequests()
{
    try
    {           
        tcpListener = new TcpListener(IPAddress.Parse("127.0.0.1"), 35800);
        tcpListener.Start();
        Debug.Log("Server is listening");
        Byte[] bytes = new Byte[1024];
        while (true)
        {
            using (connectedTcpClient = tcpListener.AcceptTcpClient())
            {               
                using (NetworkStream stream = connectedTcpClient.GetStream())
                {
                    int length;                         
                    while ((length = stream.Read(bytes, 0, bytes.Length)) != 0)
                    {
                        var incommingData = new byte[length];
                        Array.Copy(bytes, 0, incommingData, 0, length); 
                        Loader = incommingData;
                        string clientMessage = Encoding.ASCII.GetString(incommingData);
                        Debug.Log("client message received as: " + clientMessage);                            

                    }
                }
            }
        }
    }
    catch (SocketException socketException)
    {
        Debug.Log("SocketException " + socketException.ToString());
    }
}

1 Ответ

0 голосов
/ 06 июня 2018

Вы пытались передать байты в LoadRawTextureData?

private byte[] ListenForIncommingRequests()
{
    try
    {           
        tcpListener = new TcpListener(IPAddress.Parse("127.0.0.1"), 35800);
        tcpListener.Start();
        Debug.Log("Server is listening");
        Byte[] bytes = new Byte[1024];
        while (true)
        {
            using (connectedTcpClient = tcpListener.AcceptTcpClient())
            {               
                using (NetworkStream stream = connectedTcpClient.GetStream())
                {
                    int length;                         
                    while ((length = stream.Read(bytes, 0, bytes.Length)) != 0)
                    {
                        var incommingData = new byte[length];
                        Array.Copy(bytes, 0, incommingData, 0, length); 
                        Loader = incommingData;
                        string clientMessage = Encoding.ASCII.GetString(incommingData);
                        Debug.Log("client message received as: " + clientMessage);                            

                    }
                }
            }
        }
    }
    catch (SocketException socketException)
    {
        Debug.Log("SocketException " + socketException.ToString());
    }

    return bytes;
}

И называть это так.

var result = ListenForIncommingRequests();
img.LoadRawTextureData(result);
img.Apply();
GameObject.Find("Plane").GetComponent<Renderer>().material.mainTexture = img;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...