Daten über eine bestimmte Netzwerkkarte versenden

Conan85

Grünschnabel
Hallo, ich bin neu hier und hab folgendes Problem mit Java:
Ich hab einen Rechner mit zwei Netzwerkkarten. Dabei soll der Rechner über die eine Netzwerkkarte die Daten von einem zweiten Rechner empfangen und diese Daten über die andere Netztwerkkarte an einen dritten Rechner senden. Das Programm zum Senden und Empfangen der Daten ist schon fertig, ich möchte nur wissen wie ich das in Java umsetzen kann, dass die eine Netzwerkkarte nur zum Empfangen der Daten des einen Rechners und die andere Netzwerkkarte nur zum Senden der Daten auf den anderen Rechner fungiert.
Danke schon mal im Vorraus...
 
Davon ausgehend das beide NIC's unterschiedliche IP's und hoffentlich auch andere Netz-Masken haben dürfte das relativ einfach sein : ein einen normalen ServerSocket öffnen *der kann dann von ALLEN NIC's aus erreicht werden und das weiterleiten sollte WinSOCK2 alleine machen weil es schließlich dafür verantwortlich ist die Pakete dem richtigen Empfänger zukommen zu lassen.
 
Für zwei Verbindungen brauchst du ja auch zwei Sockets. Spikee hat schon recht, eig. sollte Winsocks das erledigen, dass das ganze für dich regelt. Wenn du auf Nummer sicher gehen willst, kannst du auch im Konstruktor des ServerSockets eine InetAddress angeben, die dann dafür sorgt, dass der ServerSocket nur für Verbindungsanfragen auf dieser IP achtet.

An die IPs die dein Rechner hat kommst du über die Klasse NetwrokInterface. Mit der Methode getNetworkInterfaces kannst du dir eine Liste deiner Netzwerkkarten geben lassen und dann über getInetAddresses dir die IP-Adressen der einzelnen Netzwerkkarten geben lassen.
 
Das mit dem "nur auf einer Karte auf Verbindungen warten" ist schon möglich, wie Akeshihiro bereits erwähnte. Es ist jedoch schwierig dies zu erledigen wenn man es nicht hardcoden möchte. Allerhöchstens über eine GUI auf der man dann den NIC auswählt oder eben 0.0.0.0 für ALLE.
Das weiterleiten über die "richtige" NIC zum Ziel erledigt WinSOCK für dich ... da brauchst du in Java nichts hardcoden. Es tritt allerdings eine Exception auf wenn du dem Socket den falsch NIC als Source zuweist. Welche Exception genau auftritt müsste man in einem Feldversuch ermitteln.
Worauf du allerdings achten musst ist das die beiden Punkte zwischen denen der Rechner mit den 2 NIC's hängt nicht über ein anderes Medium ein 2tes mal verbunden sind da es ansonsten für den Quell-Rechner möglich ist die Daten dierekt zum Ziel zu senden.
 
Zurück