Domanda

Sto cercando di scrivere un server BOOTP in C #.

sto ricevendo e l'analisi il pacchetto BOOTP dal client e ho bisogno di rispondere con il mio indirizzo IP del server.

Il problema è:

  • Il computer può avere più schede di rete
  • Il client non dispone ancora di un indirizzo IP

C'è un modo per scoprire cosa adattatore del pacchetto UDP è stato ricevuto il?

È stato utile?

Soluzione

Ci sono alcuni modi possibili per farlo. Associare un socket separato su ogni IP su ciascuna interfaccia fisica, allora saprai sempre quale interfaccia il pacchetto è arrivato in. Si può anche provare la bandiera IP_RECVIF insieme alla funzione di presa recvmsg, anche se non so se questo è supportato in Windows. Steven ha esempi nella Sezione 22.2 e 22.6 della programmazione di rete Unix. È possibile utilizzare il flag SIOCGIFCONF con ioctl per ottenere un elenco di interfacce sulla macchina. C'è un programma di esempio nella sezione UNP 17.6. Se c # non dà accedere a queste funzioni, ma la loro supportato su Windows si potrebbe scrivere un semplice programma C per raccogliere e aggiornare le informazioni di interfaccia / IP e quindi utilizzare mmap per condividere una regione di memoria tra il programma # C e l'enumeratore interfaccia.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top