예제 #1
0
        public void Start(int port, System.Threading.CancellationToken token)
        {
            _udpThread = new System.Threading.Thread(() => _udpReceiver.ReceiveStuff(token));
            _udpThread.Start();

            System.Net.Sockets.TcpListener serverSocket = new System.Net.Sockets.TcpListener(System.Net.IPAddress.Any, port);
            SocketEventInfo?.Invoke("Listening");
            System.Net.Sockets.TcpClient clientSocket = default(System.Net.Sockets.TcpClient);
            int clientId = 0;

            serverSocket.Start();

            clientId = 0;

            while (!token.IsCancellationRequested)
            {
                clientId    += 1;
                clientSocket = serverSocket.AcceptTcpClient();
                _log.Debug($"New TCP Client connected");
                System.Threading.Thread thread = new System.Threading.Thread(() => StartServerMessenger(clientSocket, clientId, token));
                thread.Start();
            }
            clientSocket.Close();
            serverSocket.Stop();
            SocketEventInfo?.Invoke("Closed");
        }