Как получить заголовки пакетов IP

Рейтинг: 0Ответов: 1Опубликовано: 24.03.2015

Сразу прошу прощение за свою неграмотность, я только начал изучать работу с сетью в С++. Нашёл в интернете коды простейших клиентской и серверной программ, в которых используются вышеуказанные вещи. Программы передают пакеты, принимают пакеты, всё хорошо. Но мне нужно получить доступ к заголовкам пакетов IP - как чтение заголовков после приёма, так и изменение их по своему усмотрению при передаче. Конкретно, к полям: ToS, TTL и параметры.

Как это осуществить?

Клиент и сервер взяты отсюда: http://programmersforum.ru/showthread.php?t=223563

Ответы

▲ 1Принят

используйте функции setsockopt и getsockopt. Они устанавливают и получают параметры сокета для протоколов разного уровня. Параметры, интересные вам находятся на IP-уровне, соответственно вам нужно использовать что-то вроде setsockopt(sock, IPPROTO_IP, IP_TOS, &tos_val, sizeof(tos_val)) и setsockopt(sock, IPPROTO_IP, IP_TTL, &ttl_val, sizeof(ttl_val))

Ссылки на MSDN: https://msdn.microsoft.com/en-us/library/windows/desktop/ms740476(v=vs.85).aspx, https://msdn.microsoft.com/en-us/library/windows/desktop/ms738586(v=vs.85).aspx