# BindException: Address already in use



## Nizar1984 (2. Okt 2009)

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...


----------



## SlaterB (2. Okt 2009)

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

verschoben nach Netzwerkprogrammierung


----------



## Nizar1984 (2. Okt 2009)

Der Quellcode ist leider nicht vorhanden, nur die ausführbaren jar files.


----------



## Nizar1984 (2. Okt 2009)

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?


----------



## SlaterB (2. Okt 2009)

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?


----------



## tuxedo (3. Okt 2009)

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 (5. Okt 2009)

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.


----------



## tuxedo (5. Okt 2009)

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


----------



## Nizar1984 (5. Okt 2009)

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...


----------



## SlaterB (5. Okt 2009)

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 (5. Okt 2009)

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 (5. Okt 2009)

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".


----------



## tuxedo (5. Okt 2009)

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

- Alex


----------

