В этой статье описывается временное отключение входа клиента сервера терминалов.
Применяется к: Windows Server 2012 R2
Исходный номер базы знаний: 186627
Аннотация
Если необходимо отключить подключение к серверу терминалов, у вас есть несколько вариантов. Отключение подключения для клиентов сервера терминалов отличается от отключения обычного подключения пользователей. Для подключения без клиента можно приостановить или остановить службы net Logon или Server в панель управления/Services. Однако службу сервера терминалов нельзя приостановить, остановить или отключить.
Отключение клиентского подключения
Чтобы отключить клиентское подключение, можно:
- Остановите подключение к серверу терминалов в командной строке с помощью команды «Изменить вход /Отключить». Вы можете повторно включить подключение с помощью параметра «Изменить вход в систему /Включить».
- Остановите подключение к определенному подключению сокета в разделе «Конфигурация подключения к серверу терминала» в разделе «Подключение или отключение». Это то же действие, что и открытие подключения и выбор входа или отключения в разделе » Расширенная конфигурация».
- Остановите подключение пользователя или группы к определенному подключению сокета в разделе «Конфигурация подключения к серверу терминалов» в разделе «Безопасность и разрешения».
- Остановите подключение для определенного пользователя в Диспетчере пользователей, открыв учетную запись пользователя и выбрав CONFIG. Здесь можно снять флажок » Разрешить вход на сервер терминала». При изменении учетной записи домена пользователя пользователь не сможет подключиться к домену с сервера терминалов ANY. Другие параметры относятся к серверу терминалов, на котором они задано.
Обратная связь
Были ли сведения на этой странице полезными?
Как отключить прокси-сервер в Windows 10, 7?
Источник: learn.microsoft.com
Как отключить клиент от сервера, не закрывая при этом приложения — C#
Приветствую. Имеется 2 приложения сервер-клиент. При загрузке форму сервер запускается на прослушку из класса, отправка так-же из класса. Собственно вопросы: 1)Как правильно завершить поток? Как отключить клиент от сервера, не закрывая при этом приложения.
2)Как научить сервер слушать сразу несколько клиентов? Или хотя бы переходить в режим прослушки после отсоединения первого клиента. Класс сервера:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Net; using System.Net.Sockets; using System.Threading; namespace Server < class Class1 < public static int i; public static TcpListener server = new TcpListener(IPAddress.Any, 11000); public static NetworkStream stream; public static TcpClient client; public static byte[] datalength = new byte[4]; public static string message; public static void ServerReceive() < stream = client.GetStream(); new Thread(() => < while ((i = stream.Read(datalength, 0, 4)) != 0) < byte[] data = new byte[BitConverter.ToInt32(datalength, 0)]; stream.Read(data, 0, data.Length); message = System.Environment.NewLine + «Client : » + Encoding.Default.GetString(data); MessageBox.Show(message); >>).Start(); > public static void ServerSend(string msg) < stream = client.GetStream(); byte[] data; data = Encoding.Default.GetBytes(msg); int length = data.Length; byte[] datalength = new byte[4]; datalength = BitConverter.GetBytes(length); stream.Write(datalength, 0, 4); stream.Write(data, 0, data.Length); >> >
Класс клиента:
Как отключить прокси сервер в браузере и Windows
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Net; using System.Net.Sockets; using System.Threading; namespace Client < class Class1 < public static string userid; public static string userpass; public static int i; public static TcpClient client; public static NetworkStream stream; public static byte[] datalength = new byte[4]; public static string message; public static string messagei; public static void ClientSend(string msg) < stream = client.GetStream(); byte[] data; data = Encoding.Default.GetBytes(msg); int length = data.Length; byte[] datalength = new byte[4]; datalength = BitConverter.GetBytes(length); stream.Write(datalength, 0, 4); stream.Write(data, 0, data.Length); >public static void ClientReceive() < stream = client.GetStream(); new Thread(() =>< while (((i = stream.Read(datalength, 0, 4)) != 0)) < byte[] data = new byte[BitConverter.ToInt32(datalength, 0)]; stream.Read(data, 0, data.Length); < message= System.Environment.NewLine + «Server : » + Encoding.Default.GetString(data); // Encoding.Default.GetString(data); Converts Bytes Received to String MessageBox.Show(message); >; > >).Start(); > > >
Источник: studassistent.ru
Как отключить клиента от сервера сокетов без сбоя сервера?
Я делаю сервер на Python 3.7. Его цель — подключить к нему несколько человек (в настоящее время — один клиент для тестирования) и отправлять данные туда и обратно. Отправляемые данные — это рекорд пользователя в моей игре. Я хочу, чтобы сервер получил данные, сравнил данные с наивысшей оценкой, а затем отправил данные обратно и компьютер сохранил их в файл. Дело в том, что клиент получает текстовые данные как 0 и 1! А при выходе из игры и попытке переподключить сервер вылетает с:
BrokenPipeError: [Errno 32] сломанная труба
Вот код для сервера:
import socket import sys import time servsock = socket.socket() host = ‘192.168.158.155’ port = 5555 highest_score = ‘0’ servsock.bind((host, port)) print(‘Sucsessful bind’) servsock.listen(1) conn, addr = servsock.accept() print(addr, ‘Has connected’) receiving = conn.recv(1024) receiving = receiving.decode() while True: if receiving > highest_score: highest_score = receiving message = highest_score message = message.encode() conn.send(message) else: highest_score = highest_score failed = highest_score failed = failed.encode() conn.send(failed)
Вот код для игрового клиента:
# Read high score with open(‘high_score/high_score.txt’, ‘r+’) as f: score_contents = f.read().replace(«n», » «) f.close() # Send data to server lsock = socket.socket() host = ‘192.168.158.155’ port = 5555 lsock.connect((host, port)) print(‘Connected’) ready_message = score_contents ready_message = ready_message.encode() lsock.send(ready_message) print(‘sent’) new_high_score = lsock.recv(1024) new_high_score = new_high_score.decode() print(str(new_high_score)) with open(‘high_score/GLOBALhigh_score.txt’, ‘r+’) as GLOBALf: GLOBALf.truncate() GLOBALscore_contents = GLOBALf.write(f’Highest Score:,’) GLOBALf.close()
Любая помощь приветствуется!
NateDogg 11 Май 2021 в 22:53
Посмотрите на свой серверный код. Вы принимаете новое соединение, получаете сообщение, а затем входите в бесконечный цикл, обрабатывая это одно сообщение снова и снова, снова и снова. Вы никогда не проверяете наличие другого сообщения и никогда не принимаете новые соединения. Переместите все, что начинается с accept , в цикл while .
Tim Roberts
11 Май 2021 в 22:57
Вам нужно хранить свои результаты в виде целых чисел. Помните, что в строках «1»
Tim Roberts
11 Май 2021 в 22:58
Дело в том, что клиент получает текстовые данные в виде нулей и единиц! Конечно, получает. Все компьютерные данные — это нули и единицы. Пока обе стороны согласны с протоколом, как здесь, все работает.
Ваш код заработал, как только я переместил эти 4 строки.
Tim Roberts
11 Май 2021 в 23:09
1 ответ
Лучший ответ
Настоящий корень вашей проблемы в том, что accept не был в цикле, но вот как использовать целые числа вместо строк. Обратите внимание, что ваш оператор if всегда отправлял фактический рекорд, поэтому нет необходимости дублировать этот код>
import socket import sys import time servsock = socket.socket() host = ‘localhost’ port = 5555 highest_score = 0 servsock.bind((host, port)) print(‘Sucsessful bind’) servsock.listen(1) while True: conn, addr = servsock.accept() print(addr, ‘Has connected’) receiving = int(conn.recv(1024)) if receiving > highest_score: highest_score = receiving message = str(highest_score).encode() conn.send(message)
Еще одна вещь: когда вы отправляете оценку от клиента, вы конвертируете новую строку в пробел. Не делай этого; просто отправьте цифры. И вам не нужно разрешение «r +», если вы собираетесь просто читать, и вам не нужно разрешение «r +», если вы собираетесь просто писать. Используйте для этого «w» и пропустите вызов truncate .
# Read high score with open(‘high_score/high_score.txt’, ‘r’) as f: score_contents = f.read().strip() f.close()
Источник: question-it.com