Пример #1
0
    /**
     *
     */
    public void Start()
    {
        Thread serverThread = new Thread(ServerThreadProc);

        serverData = new ServerThreadData();

        Debug.Log("[ServerManager] Starting server thread...");
        serverThread.Start(serverData);
    }
Пример #2
0
 public void Init()
 {
     if (!running)
     {
         running = true;
         threads = new List<ServerThreadData>();
         TCPChannelManager cm = (TCPChannelManager)gateway.GetChannelManager("Ethernet:TCP");
         foreach (var device in cm.ListNetworkDevices())
         {
             ServerThreadData std = new ServerThreadData(this, device);
             threads.Add(std);
         }
     }
 }
Пример #3
0
 public void Init()
 {
     if (!running)
     {
         running = true;
         threads = new List <ServerThreadData>();
         TCPChannelManager cm = (TCPChannelManager)gateway.GetChannelManager("Ethernet:TCP");
         foreach (var device in cm.ListNetworkDevices())
         {
             ServerThreadData std = new ServerThreadData(this, device);
             threads.Add(std);
         }
     }
 }
Пример #4
0
    /**
     *
     */
    public static void ServerThreadProc(object o)
    {
        Debug.Log("[ServerThread] Server thread started...");

        ServerThreadData serverData = (ServerThreadData)o;

        TcpListener listener = new TcpListener(IPAddress.Loopback, 55000);

        listener.Start();

        while (!serverData.exitRequested)
        {
            if (listener.Pending())
            {
                TcpClient client = listener.AcceptTcpClient();

                ClientData clientData = new ClientData();
                clientData.client = client;

                lock (serverData.clients) {
                    serverData.clients.Add(clientData);
                }

                Thread clientThread = new Thread(ClientThreadProc);
                clientThread.Start(clientData);
            }
            else
            {
                Thread.Yield();
            }
        }

        listener.Stop();

        lock (serverData.clients) {
            foreach (ClientData clientData in serverData.clients)
            {
                clientData.exitRequested = true;
            }
        }

        Debug.Log("[ServerThread] Server thread ended...");
    }