freien Port finden

Status
Nicht offen für weitere Antworten.

freez

Top Contributor
Hallo,

mein Programm soll automatisch einen freien Port finden, auf dem der Server lauschen soll. Ich stelle mir das so vor: mein Programm lauscht auf Port xy. Wenn ein Client sich verbindet, soll automatisch ein Port gefunden werden, der frei ist, auf dem dann die kommunikation vorgenommen wird. Dann soll das Programm wieder auf xy auf neue Clients warten.

Wie kann ich abfragen, ob ein Port frei ist, bzw. mir direkt einen freien geben lassen? Ist dies eigentlich nötig, oder wird das automatisch durch java erledigt?

Code:
ServerSocket sk = new ServerSocket(2000);
Socket clientSocket = sk.accept();
BufferedReader in = new BufferedReader (new InputStreamReader(clientSocket.getInputStream()));
BufferedWriter out = new BufferedWriter (new OutputStreamWriter(clientSocket.getOutputStream()));

Oder wird das vielleicht durch die 2. Anweisung automatisch ausgeführt?
 

freez

Top Contributor
Achso:

ist das überhaupt nötig, daß ich verschiedene Ports vergebe? Oder kann ich die komplette Komunikation über einen einzigen Port laufen lassen. Es kann ja im prinzip zig tausend Clients geben.
 

Bleiglanz

Gesperrter Benutzer
java.net + mehrere Threads

lies mal die Doku zu accept...

deine idee ist doch käse, weil deine clients ja dann nicht wissen, mit wem sie verbindung aufnehmen sollen?

Es gibt auch eine neuere Möglichkeit mit nio, die noch besser für multiple Verbindungen geeignet ist
 

freez

Top Contributor
Hallo Bleiglanz.

Du hast mir geholfen. Jetzt habe ich das ganze etwas besser verstanden. Die eindeutige Zuordnung läuft also über den Socket, der von accept() zurückgegeben wird. Somit ist meine Frage hinfällig.

Bleiglanz hat gesagt.:
deine idee ist doch käse, weil deine clients ja dann nicht wissen, mit wem sie verbindung aufnehmen sollen?

Ich denke, du hast mich etwas falsch verstanden. Das was ich gemeint habe ist, daß über einen Port ein Server lauscht. Kommt ne Anfrage, meldet der Server dem Client einen neuen Port, wo dann ein ServerThread auf seine Anfrage wartet. Also der Server an sich gibt nur einen Ports aus, zu dem sich der Client Verbinden soll, um die Daten zu übertragen. Die Kommunikation selbst wird dann mit dem neuen ServerThread über einen anderen Port vorgenommen. z.B. rein fiktiv: eine Webserver lauscht auf Port 80. Kommt ein Client, gibt er ihm über 80 lediglich eine neue Portnummer XY. Der Client verbindet sich zu Port XY, wo schon ein neuer Thread läuft, der auf XY auf den Client wartet. Dann werden die Daten übertragen.
Ist die Idee so abwägig?
Mal davon abgesehen, daß sie eh hinfällig ist, da meine Eindeutige Zuordnung über den Socket von accept() da ist. Es war nur eine Idee eines Anfängers :)
 
G

grayson

Gast
oh uh hab grad das selbe problemchen.... hast evtl nen direktlink zur betreffenden doku ? thx! (jaja ich weis ich bin ne faule sau....asche auf mein haupt...)
 

byte

Top Contributor
http://java.sun.com/j2se/1.5.0/docs/api/java/net/ServerSocket.html#accept()

hat 10 sec gedauert. aber ich stell sie dir diesmal nicht in rechnung.
 

Dukel

Top Contributor
Wie bei Ftp?
Evtl. einen neuen Socket öffnen und dann mit dem Hauptsocket dem Client den Port des neu geöffneten Socket mitteilen (der dann automatisch gefunden wurde).
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
JavaDevOp Socket Status von UDP-Port prüfen (PortUnreachableException funktioniert nicht?) Netzwerkprogrammierung 32
FrankenDerStein Socket UDP Multithreading für ein Port Netzwerkprogrammierung 2
T multithreaded multiport socketListener beendet TCP-Port-Listening Netzwerkprogrammierung 16
C Proxy Server - Antwort auf welchem Port Netzwerkprogrammierung 1
precoc Port Listener Netzwerkprogrammierung 2
T Port forwarding Netzwerkprogrammierung 11
Rudolf Socket An welchen Port sendet ein Mailserver zu einem anderen Mailserver Netzwerkprogrammierung 8
C Socket Connection refused bei Internetverbindung - Welcher Port? Netzwerkprogrammierung 5
S Port abhören Netzwerkprogrammierung 11
M Gleicher Port für Senden und Empfangen ? Netzwerkprogrammierung 17
Dit_ UDP Port testen | Ping Google? Netzwerkprogrammierung 7
J Port lauschen Netzwerkprogrammierung 2
D Weiterer Thread auf Port 843 horcht Netzwerkprogrammierung 7
H Mysql port forwarding Netzwerkprogrammierung 5
Dit_ UDP Port bestimmen | Windows, MAC, Linux... Netzwerkprogrammierung 2
J UDP port packete lesen,wenn dieser besetzt ist Netzwerkprogrammierung 3
T Java Mail port ändern Netzwerkprogrammierung 4
1 Socket Immer offener Port? Netzwerkprogrammierung 11
R wie prüfe ich ob ein port frei is ? Netzwerkprogrammierung 7
S Port auf einer bestimmten IP-Adresse auslesen? Netzwerkprogrammierung 6
X Port scannen/schicken Netzwerkprogrammierung 4
W scan remote UDP port Netzwerkprogrammierung 6
M Socket Herausfinden ob server auf port läuft Netzwerkprogrammierung 8
F UDP Receive und Send am gleichen Port Netzwerkprogrammierung 3
G Port freigeben Netzwerkprogrammierung 3
P Sockets +Port Forwarding = Chaos Netzwerkprogrammierung 4
J GSM Modem an Serial Port ansteuern (AT commands) Netzwerkprogrammierung 2
T Server ohne Port Netzwerkprogrammierung 4
Schandro Herausfinden ob hinter einem Port bereits ein ServerSocket steckt Netzwerkprogrammierung 2
ABstraCT Applet multipler port Zugriff möglich ? Netzwerkprogrammierung 5
ABstraCT Telnet port Zugriff problem (public IP) Netzwerkprogrammierung 12
T ohne Port Freigabe. Netzwerkprogrammierung 6
K Problem mit Com-Port-Komunikation Netzwerkprogrammierung 57
G "Port already in use" RMI über SSL Netzwerkprogrammierung 9
S port lauschen Netzwerkprogrammierung 2
feuervogel Sockets - Lokalen Port aber nicht IP bestimmen Netzwerkprogrammierung 3
G port scanner Netzwerkprogrammierung 6
S Port mithören Netzwerkprogrammierung 9
P jakarta.HttpClient: Port bei GetMethod angeben Netzwerkprogrammierung 3
A port noch belegt Netzwerkprogrammierung 3
K Port 13 nur einmal abfragbar? Netzwerkprogrammierung 2
R Problem mit mehreren Anfragen auf demselben Port Netzwerkprogrammierung 2
TRunKX Ein Port mehrere Verbindungen? Netzwerkprogrammierung 7
H Port abhören Netzwerkprogrammierung 3
S GEHT DAS? - Nur eine Frage! (Printer Port direkt ansteuern?) Netzwerkprogrammierung 4
T Kann man jeden Port für Programm verwenden? Netzwerkprogrammierung 2
T PORT 80 überwachen Netzwerkprogrammierung 12
G an port lauschen Netzwerkprogrammierung 10
K nicht physikalische com port ansprechen ? Netzwerkprogrammierung 3
S SSLSocketFactory.createSocket(String hostname, int port),wo? Netzwerkprogrammierung 5
G Port belegt nach Server restart Netzwerkprogrammierung 5
R Port trotz aktiver Firewall nutzen ! Netzwerkprogrammierung 9
L Kann VM nicht ueber Host Name finden Netzwerkprogrammierung 0
MaxG. WLAN Netzwerke finden Netzwerkprogrammierung 9
A trotz dyn-IP server finden Netzwerkprogrammierung 33
A Textfelder finden und im hintergrund ausfüllen? Netzwerkprogrammierung 3
C Alle Computer eines Netzwerkes finden Netzwerkprogrammierung 32
M HtmlUnit form finden... Netzwerkprogrammierung 2
A Verfügbare Server finden? Netzwerkprogrammierung 13
T Andere Rechner im Netz finden Netzwerkprogrammierung 21
M Offene UDP-Ports finden Netzwerkprogrammierung 6
K kann stub klasse nicht finden ! Netzwerkprogrammierung 8

Ähnliche Java Themen


Oben