![]() |
Модераторы: feodorv |
![]() ![]() ![]() |
|
theworldcreator |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 362 Регистрация: 25.8.2007 Где: Москва Репутация: нет Всего: 13 |
Пишу сервер раздающий данные клиентам. В бесконечном цикле смотрим не появилось ли чего на listen сокете -- если появилось обрабатываем запрос и отправляем ответ.
Написано на C
Исходный код полностью тут: https://github.com/theWorldCreator/Fviewer/.../proxy_server.c Когда клиент и сервер на одном компьютере -- все идеально, мой ноутбук выдерживает и серверную часть и 1200 клиентов каждый из которых посылает по запросу раз в 5 секунд (на большее просто оперативной памяти не хватило, а сервер тратил 12 процентов процессора и мегабайт оперативной памяти). А вот после перенесения на vps уже после 400 клиентов программа завершается со словами "Broken pipe" Подскажите, пожалуйста, в какую сторону копать Спасибо |
|||
|
||||
afiskon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 31.3.2011 Где: Россия, Москва Репутация: 1 Всего: 4 |
Классика жанра. SIG_PIPE, получаемый процессом при попытки чтения/записи из/в закрытый сокет или пайп, убивает процесс. Пропишите обработчик этого сигнала.
|
|||
|
||||
theworldcreator |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 362 Регистрация: 25.8.2007 Где: Москва Репутация: нет Всего: 13 |
Благодарю!
|
|||
|
||||
theworldcreator |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 362 Регистрация: 25.8.2007 Где: Москва Репутация: нет Всего: 13 |
Почитал, я правильно понимаю -- достаточно завести глобальную переменную в которой сохранять сокет, с которым работаешь в данный момент, потом повесить обработчик вот так:
и в обработчике сбрасывать текущий сокет в ноль и делать пометку -- не использовать его более, верно? |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Сети | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |