Mehrere / bestimmte Netzwerkkarten ansteuern

Status
Nicht offen für weitere Antworten.

Einwegdose

Aktives Mitglied
Guten Abend 🙂

Kann mir jemand verraten, ob und wenn ja wie es möglich ist in Java eine bestimmte bzw. mehrere Netzwerkkarten anzusteuern ? An meinem Laptop bin ich jetzt z.B. über Kabel und WLAN zum Router verbunden. Wenn ich nun mein Java-Programm ausführe, welches über Sockets zu einem Server connected, weiss ich ja garnicht welche Verbindung es nutzt. (Leider weiss ich auch nicht mal wie man das in Windows regeln kann :roll: )
Ich würde also gerne eine Verbindung zu einer bestimmten bzw. zu beiden parallel aufbauen können.

Wenns schon irgendwo hier steht, schonmal Entschuldigung im Vorraus, habe nichts gefunden ^^

Danke im Vorraus :applaus:
 
Danke für die ausführliche Antwort 😉

Ist ja schonmal ein Anfang die Klasse, aber scheinbar bekomme ich damit ja nur eine Auflistung der Netzwerk-Adapter, wie:

Code:
Display name: Realtek RTL8101 Family PCI-E Fast Ethernet NIC (NDIS 6.0)
Name: eth2
InetAddress: /..........
InetAddress: /192.168.2.102

Display name: Atheros AR5007EG Wireless Network Adapter
Name: net3
InetAddress: /.................
InetAddress: /192.168.2.101
 
Naja, das ist wenn dann der erste Schritt.
Ich möchte ja eine bestimmte Netzwerkkarte benutzen:

Code:
// try-catch Block

Socket soc = new Socket(server, 80);

Welche Karte wird denn da benutzt ? Das möchte ich bestimmen bzw steuern können !
 
du kannst dich nur an eine ip binden. und selbst dann ist noch nicht gesagt dass auch über die nic mit dieser ip gesendet wird. was über welchen weg wohin kommt ist sache des betriebssystems. schaut dir das (konsolen)programm "route" an.
 
Hmm ok, danke soweit.
Habe mich nochmal etwas in der Socket-Klasse umgeschaut und bin dann auf den Konstruktor " Socket(String host, int port, InetAddress localAddr, int localPort) " gekommen.

Code:
			soc = new Socket(server, 80
					,InetAddress.getByName("192.168.2.101"),51000);

Leider klappt das nicht 🙁 Er wirft folgende Exception:

java.net.BindException: Address already in use: JVM_Bind

Hat jemand eine Idee ob der Ansatz richtig ist !?!
 
Hi!

DieException bedeutet das der Port 51000 schon belegt ist, versuche es demnach mit einem anderen Port!

lg
DocRandom
 
Habs jetzt hinbekommen, nach einigem googeln und im SUN-Forum suchen ... am Port lag es glaub ich nicht, da ich mehrere probiert hab.

Code:
//try-catch-Block

soc = new Socket();
bindpoint = new InetSocketAddress(local, 0);
remote = new InetSocketAddress(server, 80);
soc.bind(bindpoint);
soc.connect(remote);			
return soc;
 
dich bei einer verbindung zu einem server explizit lokal zu binden macht eigentlich nur sinn wenn das protokoll verlangt dass du einen bestimmten port nimmt. nur weil du dich an diese adresse bindest heißt das nicht dass auch zum senden diese ip verwendet wird.
 
Nunja, ich habe es nun so gelöst, und die Statusfenster der beiden Verbindungen offen gehabt. Je nachdem welches ich gewählt hatte, zeigte Windows auch bei dem passenden Fenster die geflossenen Bytes an. Denke also mal das es so ganz gut klappt.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben