Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: ОС перестает получать сообщения по сети на порту...  (Прочитано 533 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн AlexanderDakis

  • Автор темы
  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Доброго дня!
Постараюсь разъяснить тему. ;)
У меня есть собственно сооруженный, простенький прокси http на С++. Запускается под Ubuntu 14.04 LTS. Все прекрасно работает, но только до поры до времени.
Вообщем прокси биндится на порт используя TCP сокет и прослушивает запросы клиентов.
    sock = socket(AF_INET, SOCK_STREAM, 0);
    bzero(&addr,sizeof(addr));                 // обнуляем структуру
    addr.sin_family = AF_INET;                 // будут использоваться интернет адреса IP протокола
    addr.sin_port = htons(lsnPort);            // указываем номер порта преобразуя его из целого числа в сетевое представление
    addr.sin_addr.s_addr = htonl(INADDR_ANY);  // будем прослушивать все доступные IP адреса

    bind(sock, (sockaddr *)&addr, sizeof(addr)  // просим ОС дать доступ к порту
    listen(sock,MAX_CONN);                      // указываем что сокет будет использоваться для прослушивания N-ого кол-ва клиентов
   
while(1) {

   // ожидаем подключение от клиента
   confd = accept(sock, (struct sockaddr *) &peer, (socklen_t*) &peer_size))

   ...

  // далее идет проксирование пакетов

}
(Код представлен условно, без обработки исключений и прочего для наглядности действий)

И как я уже говорил все работает норм! Но через часок другой мой прокси перестает получать запросы от клиентов. При этом он нормально проксирует все предыдущие запросы, но новые не получает. Команда netstat говорит что порт прокси Listen. Клиент отправляет запрос и ступарится в ожидании ответа. Похоже что ОС получила пакет открыв TCP сессию клиенту, но дальше моему прокси этот запрос не поступает... (в логах мой прокси фиксирует все запросы - и там ваааще ноль...). Если прокси выгрузить и попытаться перезапустить, то ОС уже не дает забиндится к порту т.к. в ОС он все еще остается Listen.

Кто что может подсказать? В какую сторону лопатой махать? Какие логи полистать? Может ли быть что у ОС переполнилась очередь сообщений? Или х.з. чё там еще может быть...

p.s. Кстати подобная ситуация иногда наблюдается и на прокси стороннего производства. Отправляешь ему запросы, а он тупо молчит. Хотя порт listen и приложение загружено и не висит...

 

Страница сгенерирована за 0.081 секунд. Запросов: 26.