Frage

Ich versuche, einen BOOTP-Server in c # zu schreiben.

Ich erhalte und Parsen der BOOTP-Paket von dem Client und ich muss mit meinem Server IP-Adresse antworten.

Das Problem ist:

  • Der Computer kann mehrere Netzwerkadapter haben
  • Der Kunde hat noch nicht eine IP-Adresse

Gibt es eine Möglichkeit, um herauszufinden, was Adapter das UDP-Paket empfangen wurde?

War es hilfreich?

Lösung

Es gibt ein paar Möglichkeiten, dies zu tun. Binden Sie eine separate Buchse auf jeder IP auf jeder physikalischen Schnittstelle, dann werden Sie wissen immer, welche Schnittstelle das Paket angekommen auf. Sie können auch die IP_RECVIF Flagge zusammen mit der recvmsg Socket-Funktion versuchen, obwohl ich weiß nicht, ob das unter Windows unterstützt wird. Steven hat Beispiele in Abschnitt 22.2 und 22.6 von Unix Network Programming. Sie können die SIOCGIFCONF Flagge mit ioctl verwenden, um eine Liste der Schnittstellen auf der Maschine zu bekommen. Es ist ein Beispielprogramm in UNP Abschnitt 17.6. Wenn c # Sie nicht auf diese Funktionen zugreifen nicht geben, aber ihr auf Windows unterstützen Sie ein einfaches C-Programm schreiben könnten zu sammeln und die Schnittstelle / IP-Informationen zu aktualisieren und dann Mmap verwenden, um einen Speicherbereich zwischen C # -Programm und der Schnittstelle enumerator zu teilen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top