Avatar billede riversen Nybegynder
06. maj 2003 - 15:24 Der er 12 kommentarer og
1 løsning

Porte

Er der en nem måde, hvor jeg kan få en liste over ikke optagede porte på pc'en...eller evt. en smart måde hvorpå man kan tjekke om fx. port 8800-8900 er i brug.
Avatar billede arne_v Ekspert
06. maj 2003 - 15:28 #1
Programmatisk ?

Ellers:

netstat -a
Avatar billede arne_v Ekspert
06. maj 2003 - 15:30 #2
To yderligere kommentarer:

1)  Hvis du kalder ServerSocket constructor med 0 som port, så
    finder Java en ledig port.

2)  Du kan finde en liste over registerede porte hos IANA.
Avatar billede riversen Nybegynder
06. maj 2003 - 15:39 #3
1: og hvis man vil tjekke en bestemt port, er den eneste måde så at tjekke om der opstår en exception ?
Som du ved laver jeg ftp...og man kan jo normalvis angive en passive port range fx. 8800-8900

2: tænker mere på porte der er optaget på pc'en. Selvom port 80 er registreret som http standard port, så er den ikke nødvendigvis i brug.
Avatar billede arne_v Ekspert
06. maj 2003 - 16:04 #4
OK.

Jeg tror strategien må være at vælge et "rimeligt ubrugt" range
og så forsøge sig og catche exceptions indtil success.
Avatar billede arne_v Ekspert
06. maj 2003 - 16:06 #5
Bemærk du skal ikke løbe igennem ranget fra neden af hver gang. Det vil give
voldsomt mange "kollisioner".

Enten loop cirkulært eller random.
Avatar billede arne_v Ekspert
06. maj 2003 - 16:09 #6
Altså ikke:

for(int i = 0; i < N; i++) {
  int port = BASE_PORT + i;
}

men enten:

int last = -1;
for(int i = (last + 1); i < (last + 1 + N); i++) {
  int port = BASE_PORT + i % N;
  // set last=port when success
}

eller:

boolean found = false;
while(!found)) {
  int port = BASE_PORT + Random.nextInt(N);
  // set found = true when success
}
Avatar billede riversen Nybegynder
06. maj 2003 - 16:18 #7
lægger du et svar
Avatar billede riversen Nybegynder
06. maj 2003 - 16:18 #8
N er vel 8900 hvis vi siger port 8800-8900 ik
Avatar billede arne_v Ekspert
06. maj 2003 - 16:31 #9
8800-8900 =>

BASE_PORT = 8800
N = 100
Avatar billede arne_v Ekspert
06. maj 2003 - 16:31 #10
svar
Avatar billede arne_v Ekspert
06. maj 2003 - 16:31 #11
N = 101

:-)
Avatar billede riversen Nybegynder
06. maj 2003 - 16:41 #12
dvs. N = 8900-8800 + 1 ?
Avatar billede arne_v Ekspert
06. maj 2003 - 16:49 #13
Ja.

N = antal porte

port range 8800-8900 er 101 porte.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester