crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Как уменьшить количество подключений к серверу до одного?, запретить подключаться другим клиентам к серверу при наличии активного
demon051
  опции профиля:
сообщение 7.12.2018, 13:06
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 21
Регистрация: 12.8.2014
Пользователь №: 4209

Спасибо сказали: 4 раз(а)




Репутация:   0  


Всем привет.

Вопрос в общем-то идиотский ) Все борются с тем, как увеличить, а мне надо наоборот

Есть написанный серверный код, который запускает листнер на порту и ждет подключения клиента

Код
.....
while(...)
{
if(select(FD_SETSIZE, &readset, NULL, NULL, &connection_timeout)==0)
continue;
//обработка подключения
.....
while(...)
{//обмен
....
}
.....
}
и далее после подключения уходит в цикл обмена с клиентом.

но если другой клиент попробует подключиться к этому же серверу, то он на своей стороне получит ОК.
однако, поскольку на сервере select не обработает это подключение, то клиент останется в подвешенном состоянии.

Вопрос: можно ли как-то указать, что если уже есть подключение, то все другие попытки получают отказ?

Понятно, что код можно переписать так, чтобы всё это фильтровать... Но он уже написан как есть и переделывать очень не хочется за "тем парнем". Надо "косячить" дальше :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 9.12.2018, 3:17
Сообщение #2


Профессионал
*****

Группа: Модератор
Сообщений: 1587
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 218 раз(а)




Репутация:   12  


по идее, тут надо клиент переписывать. если он не может приконнектиться, то у него не должно быть бесконечных ожиданий на коннект. он должен просто выходить по таймауту.
можно тупо на iptables сделать ограничение через connlimit - один коннект от одного ip. но если клиент написан с бесконечным ожиданием, то он всё равно будет висеть.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 18.8.2019, 19:58