Question

Je suis en train d'écrire un serveur BOOTP en C #.

Je reçois et l'analyse syntaxique du paquet BOOTP du client et je dois répondre avec mon adresse IP du serveur.

Le problème est:

  • L'ordinateur peut avoir plusieurs cartes réseau
  • Le client n'a pas encore une adresse IP

Y at-il moyen de savoir ce que le paquet UDP par adaptateur a été reçu?

Était-ce utile?

La solution

Il y a quelques façons de le faire. Liez une prise séparée sur chaque IP sur chaque interface physique, alors vous saurez toujours quelle interface le paquet est arrivé sur. Vous pouvez également essayer le drapeau IP_RECVIF avec la fonction de prise de recvmsg, bien que je ne sais pas si cela est pris en charge sur Windows. Steven a des exemples de la section 22.2 et 22.6 de la programmation réseau Unix. Vous pouvez utiliser le drapeau SIOCGIFCONF avec ioctl pour obtenir une liste des interfaces sur la machine. Il est un exemple de programme dans la section UNP 17,6. Si c # ne vous donne pas accès à ces fonctions, mais leur prise en charge sous Windows, vous pouvez écrire un programme simple C pour recueillir et mettre à jour les informations d'interface / IP et ensuite utiliser mmap pour partager une zone de mémoire entre votre programme C # et le recenseur d'interface.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top