Ответы пользователя по тегу Сетевое программирование
  • Как написать Netflow сенсор с нуля?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    как мне модифицировать мою программу, чтобы она могла определять потоки и корректно отправлять их коллектору?

    Для этого тебе надо понять, что такое "потоки" о которых ты говоришь, где находится информация о принадлежности пакета потоку и как до неё добираться.

    Если ограничиться определением по ссылке, то тебе надо будет разбирать сырые пакеты до сетевого уровня, откидывать не-IP, из IP извлекать IP-протокол, адрес источника, адрес назначения и тип сервиса, для протоколов TCP и UDP дополнительно извлекать порт источника и порт назначения. Всё это довольно просто сделать самому вооружившись RFC по упомянутым протоколам. Также надо будет понять, что делать с фрагментированными IP-пакетами.
    Ответ написан
    Комментировать
  • Ошибка с подключением к самописному ftp серверу, в чем проблема?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    в чем проблема?

    У тебя гонка между этим:
    if(pthread_create(&tid, NULL, new_connection, serv)) qDebug() << "ошибка создания потока подключения";
            server->num_of_users++;

    и этим:
    descriptor = *(server->sa[server->num_of_users-1]);


    С точки зрения работы с потоками код написан никак.
    Ответ написан
  • Как обходить возврат функции epoll_wait?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    когда из слушающих сокетов ловиться соединение(accept), оно добовляется в набор для отслеживания еполл_вайтом и тут же возвращается с событием 4. Как? По логике если ты ко мне подключился, я жду от тебя "новостей" с цифрой 1.

    4 -- это EPOLLRDHUP? По логике, если ты принял входящее соединение, а другая сторона на нём сделала shutdown(…, SHUT_WR), чтобы данные могли идти только от тебя к клиенту, то такое поведение ты и получишь.
    Ответ написан
    6 комментариев
  • Как перехватить сетевые пакеты до их шифрования?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Если шифрование/расшифровка делаются какой-нибудь библиотекой, проще всего перехватить именно эти библиотечные вызовы. Для этого нужно узнать название этих функций и подменить их с помощью своей библиотеки, загруженной в процесс через LD_PRELOAD.
    Ответ написан
    1 комментарий
  • Аналогия switch

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Скорее всего или одинаково, или свитч эффективнее.
    Производительность свитча от размера не зависит, поскольку всё равно там таблица переходов.
    Если цель поднять производительность, я бы посоветовал начать с профилирования и поиска реально тормозящих мест; замена свитча на массив функций в этом отношении ничего не даст.
    Ответ написан
    3 комментария