BindException: Address already in use

Status
Nicht offen für weitere Antworten.

Nizar1984

Mitglied
Folgendes Problem.

Ich kann eine Applikation, die auf bestimmten Rechnern einwandfrei läuft, auf einem anderen Rechner nicht starten.

Dabei wird eine BindException geworfen: Address already in use; Cannot Bind

Zum Starten der Applikation müssen zwei .bat files ausgeführt werden.

Beim Starten der ersten wird ein bestimmer Port besetzt, beim Ausführen der zweiten wird dann diese Exception geworfen.

In beiden .bat Datei steht etwas von multicast-listener-ports...

"-Dmulticast-listener-port=55555"

Es ist aber notwendig dass beide .bat Dateien denselben Port verwenden. Es funktioniert ja auch wie gesagt auf den anderen Rechnern.

Woran kann das liegen?

Alle Rechner haben das gleiche Betriebssystem...
 
S

SlaterB

Gast
Java ist bei all dem nicht beteiligt oder zumindest nicht Quellcode vorhanden, debugbar usw?

verschoben nach Netzwerkprogrammierung
 

Nizar1984

Mitglied
Es muss an irgendwelchen Einstellungen am Rechner liegen, da der Quelltext selbst wie gesagt in Ordnung ist und auf anderen Rechnern das Programm läuft.

"Die BindException tritt auf, wenn das Verbinden eines Sockets mit einer lokalen Adresse oder einem lokalen Port fehlgeschlagen ist."

Es muss an gewissen Einstellungen am Rechner liegen, an dem das Programm nicht funktioniert, hat irgendjemand eine Idee?
 
S

SlaterB

Gast
also normalerweise bedeutet diese Fehlermeldung, dass der Versuch fehlgeschlagen ist, den Port als Server zu besetzen,

nicht als Client, da können sich beliebig viele anmelden falls der vorhandene Server die akzeptiert,
falls die Verbindung nicht klappt wäre 'Connection refused' oder so typisch,

aber 'Address already in use' sagt nur ein Server,
vielleicht startest du zwei Server auf die gleiche Adresse?
 
T

tuxedo

Gast
Oder eine andere Anwendung hat den Port schon belegt?!

Mit "netstat" kann man in Windows und Linux nachschauen welche Anwendung da dahinter steckt.

- Alex
 

Nizar1984

Mitglied
Hallo,

Ich habe das mit netstat versucht, und dann einen freien Port gefunden und diesen in beiden .bat Dateien angegeben (das ist notwendig, damit die applikation läuft), aber es funktioniert immer noch nicht.

Es scheint aber, dass sich beide java prozesse gegenseitig blockieren...ich weiß nicht weiter.
 
T

tuxedo

Gast
Du darfst deine beiden Java-Programme nicht auf einem Rechner laufen lassen und in beiden ein "new ServerSocket()" mit gleichem Port benutzen...
 

Nizar1984

Mitglied
Es ist nötig, beide Prozesse auf einem Rechner zu starten, weil mit einem ein Grid gestartet wird und mit dem zweiten Daten hineingepumpt werden...und wie gesagt funktioniert dieses Vorgehen ja auch auf den anderen Rechnern, nur hier wird eine Exception geworfen...
 
S

SlaterB

Gast
vielleicht sind auf anderen Rechnern Konfigurationsdateien oder es hängt vom Netzwerkstatus, vom eingeloggten Benutzer oder wer weiß was ab,
eine Blackbox kann man nicht sinnvoll testen
 

Nizar1984

Mitglied
Kann es sein dass das Probem mit multicasting zusammenhängt / dass es auf dem Rechner nicht unterstützt wird?

Falls ja wie kann ich Multicasting erlauben?
 

Nizar1984

Mitglied
Ich habe auf dem Rechner nachgeschaut, auf dem es funktioniert. Jeder Prozess braucht denselben Port. Der Port ist erst wieder frei, wenn alle drei Prozesse beendet werden. Geht alles einwandfrei.

Nur auf dem einen Rechner will er den Port nicht "teilen".
 
T

tuxedo

Gast
ServerSocket-Ports kann man nicht JVM-übergreifend teilen. Zumindest nicht mit Java. Obs mit anderen Sprachen geht: Kein Schimmer.

- Alex
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen

Ähnliche Java Themen


Oben