Einfacher Socket-Server in Unity

Ich möchte ein C # -Plugin in meinem Unity-Projekt verwenden. Dieses Plugin sollte als Server fungieren, der Werte von einem Client erhält, damit ich diese Werte für die weitere Verarbeitung verwenden kann. Das Problem ist, dass der Server eine Endlosschleife hat. Und Endlosschleifen lassen Unity hängen. Wie gehe ich damit um?

EDIT: Ich hänge ein Code-Snippet des Server-Programms an. Meiner Meinung nach gibt es 2 Punkte, die Probleme verursachen können. Die Endlosschleifen und der Punkt, an dem das Programm angehalten wird, wie im Code angegeben:

void networkCode()
{
    // Data buffer for incoming data.
    byte[] bytes = new Byte[1024];

    // Establish the local endpoint for the socket.
    // Dns.GetHostName returns the name of the 
    // host running the application.
    IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName());
    IPAddress ipAddress = ipHostInfo.AddressList[0];
    IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 1755);

    // Create a TCP/IP socket.
    listener = new Socket(ipAddress.AddressFamily,
        SocketType.Stream, ProtocolType.Tcp);

    // Bind the socket to the local endpoint and 
    // listen for incoming connections.
    try
    {
        listener.Bind(localEndPoint);
        listener.Listen(10);

        // Start listening for connections.
        while (true)
        {
            // Program is suspended while waiting for an incoming connection.
            Debug.Log("HELLO");     //It works
            handler = listener.Accept();
            Debug.Log("HELLO");     //It doesn't work
            data = null;

            // An incoming connection needs to be processed.
            while (true)
            {
                bytes = new byte[1024];
                int bytesRec = handler.Receive(bytes);
                data += Encoding.ASCII.GetString(bytes, 0, bytesRec);
                if (data.IndexOf("<EOF>") > -1)
                {
                    break;
                }

                System.Threading.Thread.Sleep(1);
            }   

            System.Threading.Thread.Sleep(1);
        }
    }
    catch (Exception e)
    {
        Debug.Log(e.ToString());
    }
}

EDIT: Nach der Hilfe von @Programmer ist das C # -Plugin fertig. Aber Unity liest nicht die richtigen Werte. Ich hänge den Unity-Side-Code an:

using UnityEngine;
using System;

using SyncServerDLL;    //That's our library

public class receiver : MonoBehaviour {

    SynchronousSocketListener obj;   //That's object to call server methods

    // Use this for initialization
    void Start() {
        obj = new SynchronousSocketListener ();
        obj.startServer ();
    }

    // Update is called once per frame
    void Update() {
        Debug.Log (obj.data);
    }
}

Ich habe die SynchronousSocketListener-Klasse in Visual Studio gründlich getestet. Es gibt dort gute Ergebnisse.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage