Seite 1 von 1
Server IP Adresse nach ReceiveNetworkData() herausfinden ?
Verfasst: 13.09.2008 22:08
von Holger
Nachdem ich einen Server errichtet habe, schickt der Client mir über Broadcast das erste Datenpaket - funktioniert einwandfrei.
Nun will der Client wissen, welche IP Adresse die Netzwerkkarte hat, an der er angeschlossen ist.
Momentan löse ich das mit einem Requester, mit dem man angeben kann, welche Netzwerkkarte verwendet werden soll.
Gibt es eine Möglichkeit, die IP Adresse der Netzwerkkarte herauszufinden, worüber der Client seine Daten gesendet hat ?
Also das Gegenstück zu GetClientIP() ?
Verfasst: 13.09.2008 23:16
von THEEX
Du willst doch die ClientIP wissen, oder versteh ich das falsch? Dafür benötigst GetClientIP.
Die ServerIP haste ja schon, sonst könntest da ja nicht connecten...
Verfasst: 13.09.2008 23:28
von hardfalcon
Verfasst: 14.09.2008 00:11
von Holger
Ich befürchte, daß ich mich etwas unklar ausdrückte.
Der mit PB erstellte Server ist nicht TCP sondern UDP - er soll die eingehenden DHCP Messages analysieren.
Der Verlauf sieht so aus:
1. Der Client schickt ein DHCP Discover Paket über Broadcast zum Port 67 ( den UDP Server ).
2. Ich soll dem Client ein DHCP Offer Paket schicken, in dem die Server IP und die ( von mir bestimmte ) Client IP steht.
Nun weiß ich aber nicht, wie ich herausfinden soll, über welche meiner Netzwerkkarten die Verbindung zustandekommt - ich muß also immer manuell die Server IP Adresse angeben, welche ich im Netzwerkprotokoll TCP in Windows eingegeben habe.
Wieso er dieses Protokoll bei UDP überhaupt braucht, ist mir aber ein Rätsel - ohne ein aktiviertes TCP können jedenfalls keine Daten mit UDP über die Netzwerkkarte gesendet werden, obwohl die Verbindung bis zu dem Zeitpunkt nur über die beiden DHCP Ports läuft - die IP ist Broadcast.
Das Programm soll aber automatisch ermitteln, über welche meiner Karten der Client die Daten an den Server schickt. Also brauche ich, nachdem das erste Client Paket empfangen wurde, eine Funktion wie GetServerIP(), die es aber in PB nicht gibt - und die dafür notwendigen API Funktionen kenne ich nicht.
Verfasst: 14.09.2008 04:11
von hardfalcon
Du könntest versuchen, die Ausgabe von route auszuwerten (ist natürlich etwas Aufwand). Gibt sicherlich auch ne Möglichkeit mit WinAPI, aber leider kenn ich sie nich...
