HTTP Ausgangsport festlegen

JavaChippy

Mitglied
Hi Leute,

ich habe ein Programm geschrieben, das sich automatisch installiert oder updatet, wenn man es startet. Die dazu benötigten Dateien liegen auf einem Webserver.

Mein Problem ist jetzt, dass das ich mein Programm auf Computern in einem Netzwerk installieren möchte das von einer Firewall geschützt ist, die nur vereinzelte Ports, wie 80 für http, freigibt. Mein Programm kann aber keine Internetverbindung aufbauen, was, so vermute ich, daran liegt, dass Java einen von der Firewall gesperrten Ausgangsport verwendet. Ich habe aber keine möglichkeit diesen zu entsperren.
Ich brauche also eine Möglichkeit, den Aufgangsport, der auf meinem Computer verwendet wird, manuell festzulegen. Ich verwende zurzeit Standard Url-Objekte aus java.net. Ich habe dort aber keine passende Methode gefunden.

Kann mir jemand helfen?
Schonmal danke im Voraus.
 

JavaChippy

Mitglied
Ich lese mit einer UrlConnection eine Datei aus, in der die aktuelle Versionsnummer steht. Stimmt diese nicht mit der lokalen Versionsnummer überein, lese ich eine online-Datei aus, in der alle Dateien stehen, die geupdatet werden müssen. Diese lese ich ebenfalls mit einer einfachen Url-Connection aus und schreibe sie in die lokalen Dateien.
Also alles mit Http.
 

Thallius

Top Contributor
Dann ist das auch nur Port 80 und sollte damit frei sein. Es sei denn die haben eine Firewall die auf Programme wirkt.

Gruß

Claus
 

Tobse

Top Contributor
Dann ist das auch nur Port 80 und sollte damit frei sein. Es sei denn die haben eine Firewall die auf Programme wirkt.

Gruß

Claus

Er meint den Ausgangsport. Dass die Firewall die Connection zu Port 80 zulässt, wissen wir. Aber es gibt auch bei ausgehenden Verbindungen einen Lokalen Port; und wenn der von der FW gesperrt ist, hat Java keine Chance.

@TE:
1. Sehr gute Fehlerbeschreibung
2. 1 Sekunde Google: Setting source port on a Java Socket? - Stack Overflow

Die lösung: Socket#bind
 

JavaChippy

Mitglied
Erstmal: Danke für die schnellen Antworten.
Ich habe natürlich zuerst gegoogelt, habe aber nichts passendes gefunden, was daran liegen könnte, dass ich nach Ausgangsport und nicht source port gesucht habe...

Ich soll also nicht mit Urls und UrlConnections arbeiten, sondern mit Sockets arbeiten?
Ich habs gerade mal kurz getestet mit:
Code:
Socket socket = new Socket("IPvonMeinemServer", 80);
socket.bind(new InetSocketAddress(80));
Ich bekomme aber eine Exception die sagt, dass der Socket bereits gebunden ist.
Wie kann ich die Lösung jetzt richtig einsetzen?
 

Tobse

Top Contributor
Wenn du das Socket über diesen Konstruktor erstellst macht er meines Wissens nach direkt die Verbindung auf. Das geht damit einher, dass bereits ein lokaler Port ausgesucht wird.

Java:
Socket socket = new Socket();
socket.bind(new InetSocketAddress(80));
socket.connect("IP/HOST", 80);
 

JavaChippy

Mitglied
Vielen Dank für die vielen Antworten.
Ich werd zwar erstmal nicht dazu kommen, aber sobald es möglich ist, werd ich es testen und dann noch mal schreiben.

Nur noch für alle die sich das später mal anschauen:
Die letzte Codezeile sollte so aussehen:
Code:
socket.connect(new InetSocketAddress("IP/HOST", 80));

Ansonsten alles super und vielen Dank!
 
Ähnliche Java Themen

Ähnliche Java Themen


Oben