Esempio n. 1
0
        // Thread
        private void ServerThread(ServerForm main)
        {
            try
            {
                main.serverSocket.Start();
            } catch
            {
                MessageBox.Show("The port is invalid or already in use.", "Error");
                serverSocket = null;
                main.Invoke(new MethodInvoker(delegate()
                {
                    main.btnClose.PerformClick();
                }));
                return;
            }
            try
            {
                main.clientSocket = serverSocket.AcceptTcpClient();
            } catch (SocketException e)
            {
                return;
            }

            NetworkStream stream = new NetworkStream(clientSocket.Client, false);

            byte[] buffer     = new byte[1024];
            int    bytesCount = stream.Read(buffer, 0, buffer.Length);

            stream.Close();
            string ip = Encoding.UTF8.GetString(buffer, 0, bytesCount);

            if (Passed(main, clientSocket, ip) == false)
            {
                return;
            }

            main.serverShellWindow = new ServerShellWindow(main, btnShell);
            main.serverInboxWindow = new ServerInboxWindow(main, clientSocket, btnInbox);
            main.Invoke(new MethodInvoker(delegate()
            {
                main.Text = $"{ip} connected.";
                main.serverShellWindow.Show();
                main.serverInboxWindow.Show();
            }));
            main.terminal = new Terminal(this);
            main.terminal.Start();
            main.listenThread = new Thread(o => ListenThread(main));
            listenThread.Start();

            ConnectionChanged(true);

            // Bắt đầu viết log vì client đã được server cho phép truy cập
            log = new Log(parent.pathLogFolder, ip);
        }