Net-srac Geschrieben 23. Oktober 2002 Geschrieben 23. Oktober 2002 Tachchen, ich will an einem Rechner mit evtl mehr als einer Netzwerkkarte prüfen, welche der beiden Karten mit dem WAN und welche mit dem LAN verbunden ist. Dazu hab ich mir gedacht, ich sende einfach ein Ping an einen Hostnamen im WAN. Nur stellt sich jetzt follgende Frage. Wie kann ich beim senden eines Pings festlegen von welcher Netzwerkkarte das Paket abgeschickt werden soll. Oder habt ihr andere vorschläge?´ Wäre es z.B. möglich eine standardverbindung mittels Sockets aufzumachen. z.b. auf port 80 des WAN hosts? Aber kann ich bei Socketverbindungen auch angeben von welcher Karte ich ausgehen will? Danke für eure Hilfe. Zitieren
Klotzkopp Geschrieben 23. Oktober 2002 Geschrieben 23. Oktober 2002 Nur mal so ein Gedanken: Kannst Du nicht einfach anhand der IP-Adresse feststellen, in welchem Netz Du bist? Zitieren
Net-srac Geschrieben 23. Oktober 2002 Autor Geschrieben 23. Oktober 2002 nein, da der Host, an den ich mich connecten will übers Internet erreichbar ist. Ich hab aber jetzt herrausgefunden das ein Ping nicht an eine Karte gebunden werden kann, weil OSI Schicht.4 Man kann doch aber bei einer Socketverbindung ein Bind an die lokale Karte machen oder? Sollte ja eigentlich OSI 2 oder 3 sein. Oder irre ich? Zitieren
Klotzkopp Geschrieben 23. Oktober 2002 Geschrieben 23. Oktober 2002 Originally posted by Net-srac nein, da der Host, an den ich mich connecten will übers Internet erreichbar ist. Was hat das damit zu tun? Die beiden Netzwerkkarten haben doch wahrscheinlich unterschiedliche IP-Adressen und liegen in unterschiedlichen Netzen. Daran entscheidet sich auch, über welche Karte eine Verbindung aufgebaut ist. Zitieren
Net-srac Geschrieben 24. Oktober 2002 Autor Geschrieben 24. Oktober 2002 Originally posted by Klotzkopp ...Die beiden Netzwerkkarten haben doch wahrscheinlich unterschiedliche IP-Adressen und liegen in unterschiedlichen Netzen.... Also es schaut folgender maßen aus. Es existiert ein Host der übers Internet erreichbar ist. Der Rechner, der auf diesen Host zugreifen soll kann Standalone oder Router sein. Allerdings kann er auch mit 2 WAN verbunden sein, also 2 IP Adressen besitzen, die nicht 10.0.0.x 192.168.x.x oder 172.27.x.x entsprechen, sondern von verschiedenen DHCP's zugeordnet werden. Daher weiß ich ja auch nicht in welchem Netz sich die Karte befinden muß. Ich soll nun rausbekommen welche Karte mit besagtem Host verbindung aufbauen kann. Dies geht nur wenn ich versuche einen Ping o.ä. zu senden und ein echo erwarte. Nur kann man ja bei einem Ping nicht die Karte angeben von der er gesendet wird. Aber wie schauts mit einer Socketverbindung aus? Das ist ja eine OSI Schicht tiefer. Kann man da irgendwie das Netzwerkinterface bestimmen, das die Verbindung aufbauen soll? Es reicht ja schon, wenn ich nur eine Verbindung an irgendeinen offenen Port schaffe, da es den Hostnamen nur einmal im Netzen geben wird. Zitieren
Klotzkopp Geschrieben 24. Oktober 2002 Geschrieben 24. Oktober 2002 OK, jetzt hab ich es kapiert, sorry für die lange Leitung. Mit bind müsstest Du einen Socket an eine bestimmte IP-Adresse binden können: sockaddr_in local_sin; memset (&local_sin, 0, sizeof (sockaddr_in)); local_sin.sin_family = AF_INET; DWORD host = inet_addr( "192.168.0.1" ); // Beispiel memcpy( &local_sin.sin_addr.s_addr, &host, sizeof(struct in_addr)); local_sin.sin_port = htons( wPort); int nRet = bind( hSocket, (sockaddr*)&local_sin, sizeof( sockaddr_in));[/CODE] Für das nachfolgende connect sollte dann die passende Karte verwendet werden. Zitieren
Net-srac Geschrieben 24. Oktober 2002 Autor Geschrieben 24. Oktober 2002 Originally posted by Klotzkopp OK, jetzt hab ich es kapiert, sorry für die lange Leitung. Lag wohl eher an der ausgefallenden Aufgabe Aber das sieht so aus, als wäre dies genau die Lösung die ich brauche. Thnx Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.