Vous dites que l'application est ancienne, mais rien sur les systèmes d'exploitation sur lesquels vous l'exécutez. À moins que vous ne l'exécutiez sur Windows NT ou Windows 16 bits, il n'y a pas de raison pour que vous ne puissiez pas migrer vers Winsock 2. Vous pouvez download Winsock 2 pour Win95, et il est disponible dans tous les systèmes d'exploitation Win9x ultérieurs, ainsi comme dans Windows NT 4 et plus.
Si vous devez vraiment exécuter cette application sur Win16, il est peut-être possible de déterrer l'une des piles Winsock tierces de cette époque qui offrait un support de socket brut, mais cela ressemble à un gros problème, si vous voulez le faire légalement. Il est plus facile de simplement spécifier Win98 comme version minimale du système d'exploitation et de passer à autre chose.
EDIT: Je suppose que vous pouvez faire ce que vous voulez avec raw sockets, ce qui nécessite de passer à 2 Winsock si vous devez utiliser le Winsock intégré dans les systèmes d'exploitation MS. Changer votre programme pour utiliser Winsock 2 au lieu de Winsock 1.1 est facile; un changement de bibliothèque, un changement de fichier d'en-tête et un changement à l'appel WSAStartup
, et voilà. Les sockets ICMP brutes vous permettent de construire n'importe quel paquet ICMP que vous voulez, et dans les systèmes d'exploitation les plus récents, vous pouvez également écouter les paquets ICMP. S'il s'avère que la pile ne vous laissera pas écouter les paquets dont vous avez besoin via les sockets, vous pouvez le faire avec les techniques packet capturing à la place.