Вход на сайт
Socket: Как удостовериться что связь в норме?
479 просмотров
Перейти к просмотру всей ветки
moose свой человек
в ответ anly 18.03.17 15:53, Последний раз изменено 18.03.17 18:09 (moose)
Еще вариант: выбираем блокируемый сокет на сервере. Выдаем в бесконечном цикле акцепт() и висим, пока кто-нибудь не сконнектится. Если это - наш первый клиент, создаем трэд и передаем туда сокет, и там происходит "логика". По циклу возвращаемся к акцепт() и снова зависаем. Рабочему соединению это не мешает. Еще кто-то сконнектился - смотрим, активен ли трэд, если нет, или если там висит тот же клиент, который только что сконнектился - принять соединение и заново инициализировать трэд (или грохнуть и создать новый, или воспользоваться трэдпулом, если он имеется в Вашем кастрированном рантайме). Если трэд активен, и новый клиент - не тот же, отфутболиваем новичка.