Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Распределённые приложения и сеть > Подключение к серверу нескольких клиентов


Автор: boobie 9.8.2017, 14:40
Пытаюсь заставить сервер работать с несколькими клиентами, а не с одним...
Создаю сервер так:
Код

// получаем адреса для запуска сокета
IPEndPoint ipPoint = new IPEndPoint(IPAddress.Any, port);             
// создаем сокет
Socket listenSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
// связываем сокет с локальной точкой, по которой будем принимать данные
listenSocket.Bind(ipPoint);

Затем устанавливаю длину очереди:
Код

listenSocket.Listen(10);


1. Вопрос, 10 - это количество клиентов, которые отправили запрос на подключение и ожидают ответа?
2. А что будет с одиннадцатым, попытавшимся подключиться?
3. А как быть, если, например подключилось к серверу 13 клиентов и уже новые подключения не нужны ПОКА, при этом через некоторое время новые клиенты могут понадобиться, но текущая очередь не нужна... Ее можно как-нибудь очистить?

Затем создаю новый сокет для одного из очереди...
Код

Socket handler = listenSocket.Accept();

Этот метод блокирует работу потока. 
4. Можно ли его запустить внутри отдельного потока, а затем передавать этот handler, например, в массив (в котором хранить остальные сокеты клиентов) и работать там с ним?
5. Я правильно понимаю, что этот объект (в данном случае handler) - это необходимый мне сокет, который посвящен работе с клиентом, т.е. для Receive/Send и т.п.? 
6. Как проверить (кроме try-catch) активен ли он (handler в данном случае) еще, т.е. подключение существует или разорвано?

Можно ли использовать для нескольких подключений 1 порт и как организовать работу сокетов?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)