Quale adattatore ho appena ricevuto questo pacchetto UDP su?
-
20-09-2019 - |
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?
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.