У меня есть программное обеспечение, написанное на C ++, которое действует по-разному на 2 отдельных компьютерах. Программное обеспечение отправляет UDP-пакеты, используя:
m_socketHandle = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)
Обе машины используют WIN 7 SP1
По словам Wireshark:
Машина 1: для раздела «Не фрагментировать» заголовка IP задано значение «Не фрагментировать: не установлено».
Машина 2: для нее установлено значение 1 «Не фрагментировать: УСТАНОВИТЬ».
Так что это побудило меня попробовать и явно установить его, используя:
Этот вопрос стека
а также
int val = 1;
setsockopt(sd, IPPROTO_IP, IP_DONTFRAGMENT, (char *)&val, sizeof(val));
Но это никак не влияет на результат, который всегда был «Не фрагментируй: НЕ УСТАНАВЛИВАЙ».
Я что-то здесь упускаю, почему это было бы по-разному на разных машинах, даже если код явно не устанавливал это?
Задача ещё не решена.
Других решений пока нет …