// 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); }