Server IP Adresse nach ReceiveNetworkData() herausfinden ?

Für allgemeine Fragen zur Programmierung mit PureBasic.
Holger
Beiträge: 53
Registriert: 25.02.2005 21:17

Server IP Adresse nach ReceiveNetworkData() herausfinden ?

Beitrag 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() ?
THEEX
Beiträge: 804
Registriert: 07.09.2004 03:13

Beitrag 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...
Eine Art Query-Planner soll die Ausführung von Map/Reduce-Funktionen in Hadoop stark beschleunigen.
Holger
Beiträge: 53
Registriert: 25.02.2005 21:17

Beitrag 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.
Benutzeravatar
hardfalcon
Beiträge: 3447
Registriert: 29.08.2004 20:46

Beitrag 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... :|
Antworten