Вы говорите, что приложение старое, но ничего об ОС, на которых оно запущено. Если вы не используете его в 16-битной Windows или NT 3.x, нет веской причины, по которой вы не можете просто перейти на Winsock 2. Вы можете загрузить Winsock 2 для Win95, и он поставляется во всех более поздние ОС Win9x, а также в Windows NT 4 и более поздних версиях.
Если вам действительно нужно запустить это приложение на Win16, возможно, будет возможно выкопать один из сторонних стеков Winsock той эпохи, который действительно предлагал поддержку сырых сокетов, но это звучит как огромная проблема, если вы хотите сделать это на законных основаниях. Проще просто указать Win98 как минимальную версию ОС и двигаться дальше.
РЕДАКТИРОВАТЬ : Я предполагаю, что вы можете делать то, что вы хотите, с raw сокетами , что требует перехода на Winsock 2, если вы должны использовать встроенный Winsock в операционных системах MS , Изменить вашу программу на использование Winsock 2 вместо Winsock 1.1 легко; одно изменение библиотеки, одно изменение файла заголовка и изменение вызова WSAStartup
, и вот вы здесь. Необработанные сокеты ICMP позволяют вам создавать любые ICMP-пакеты, которые вы хотите, и в более новых ОС вы также можете прослушивать ICMP-пакеты. Если окажется, что стек не позволит вам прослушивать пакеты, которые вам нужны, через сокеты, вы можете вместо этого использовать захват пакетов .