Я написал простые серверные и клиентские приложения, где я могу переключаться между протоколами TCP, DCCP и UDP. Цель состояла в том, чтобы передать файл из одного в другой и измерить трафик для каждого протокола, чтобы я мог сравнить их для разных сетевых настроек (я примерно знаю, каким должен быть результат, но мне нужны точные цифры / графики). В любом случае, после запуска обоих приложений на разных компьютерах и запуска tcpdump в лог tcpdump я получаю только первые несколько МБ (~ 50 МБ) из моего файла 4 ГБ. Приложения написаны в стандартном коде C / C ++, который можно найти в любом месте в Интернете.
В чем может быть проблема или что я тут не так делаю?
- Редактировать
Командная строка, которую я использую:
tcpdump -s 1500 -w mylog
tcpdump захватывает затем пакеты только первые ~ 55 сек . Это время, когда клиент должен отправить файл в сокет. После этого он останавливается, хотя сервер продолжает получать и записывать файл на жесткий диск.
- Редактировать2
Исходный код :
client.cpp
server.cpp
common.hpp
common.cpp
- Редактировать окончательный вариант
Как многие из вас отмечали (и, как я подозревал), в исходном коде было несколько неправильных представлений / ошибок. После того, как я его почистил (или почти переписал), он работает как нужно с tcpdump. Я приму ответ от @Laurent Parenteau , но только для , пункт 5. , поскольку он был единственным, имеющим отношение к проблеме. Если кто-то заинтересован в правильном коде, вот он:
Исходный код отредактирован
client.cpp
server.cpp * *
тысяча пятьдесят-одна
common.hpp
common.cpp