webForumDet fria alternativet

dynamisk port

Javaur Java

9 svar · 429 visningar · startad av toba

Medlem sedan jan. 20059 inlägg
Frågan#1

Hej
Någon som vet hur man får en socket att binda första lediga port? Så man inte behöver ange en själv och råka ta en som är upptagen.

Medlem sedan juni 20008 205 inlägg
#2

Du menar, att få en ServerSocket att binda första bästa port? Om porten inte går att binda kastas ett exception, fånga och prova på nästa port. Typ:

ServerSocket server;
int port = 1024;
boolean foundPort = false;
do {
    try {
        server = new ServerSocket(port);
        foundPort = true;
    } catch (IOException e){
        port++;
    }
} while (!foundPort);

\t Det är rekommenderat att du börjar leta port på 1024, portnummer lägre än så måste man vara root för att binda under *NIX.

Medlem sedan jan. 20059 inlägg
#3

Nä inte riktigt vad jag tänkte. Tänkte mer att det skulle gå att låta systemet ge mig första lediga port och att jag inte skulle behöva bry mig om exceptions.

Medlem sedan aug. 2000380 inlägg
#4

API skrev:

public ServerSocket(int port)
throws IOException

Creates a server socket, bound to the specified port. A port of 0 creates a socket on any free port.
Medlem sedan jan. 20059 inlägg
#5

Precis vad jag var ute efter. Tackar

Medlem sedan sep. 2001961 inlägg
#6

Men... hur ska du då kunna koppla mot porten om du inte vet vilken port det är den har tagit??

"Hej jag har nytt telefonnummer. Ring mig."

Medlem sedan jan. 20059 inlägg
#7

Jag använder metoden getLocalPort() på min serversocket när jag har skapat den, så får jag reda på vilken port den tog.

Medlem sedan sep. 2001961 inlägg
#8

Jo, det vet jag också att man kan göra, men hur låter du klienter på andra datorer få veta vilken port du valt så de kan koppla upp sig??

Medlem sedan jan. 20059 inlägg
#9

Applikationen jag gör är ett chatsystem och jag behövde kunna binda till en port dynamiskt när en klient vill skapa en chattgrupp. Klienten har då redan en koppling mot servern där den får reda på vilken port den skall koppla upp sig mot om den vill vara med i chattgruppen.

Medlem sedan sep. 2001961 inlägg
#10

Ah...

Jag hade nog inte löst det på det sättet. Jag hade gjort en pool ur vilken man får nästa lediga.

Men det är jag det...

133 ms totalt · 3 externa anrop · v20260731065814-full.b746b907
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)