Avatar billede r.hegaard Nybegynder
27. marts 2005 - 22:17 Der er 4 kommentarer og
2 løsninger

Problemer når der disconnectes fra server

Jeg er igang med at lave en chat-server i Java.
Problemet er, at jeg ikke kan finde ud af, hvornår en bruger ikke længere er tilsluttet til serveren.
Jeg har en ServerSocket (welcomeSocket), som står og venter på forbindelser med welcomeSocket.accept(). Hver gang der kommer en forbindelse, så gemmes den i en Socket, som videregives til en tråd. Tråden startes og der gemmes en reference til den i en ArrayList.
Hvordan finder jeg lettest muligt ud af, hvornår en bruger ikke længere er tilsluttet ?

Jeg har prøvet at gøre sådan, at når der ikke kan sendes en besked til brugeren, så kaldes destroy() på tråden og remove(num) på ArrayListen. Det virker desværre ikke - hvad gør jeg forkert ?
Avatar billede arne_v Ekspert
27. marts 2005 - 22:19 #1
Fjern en client fra listen når:
  - du får en fejl ved at forsøge at sende til den
  - du ikke har modtaget noget fra den i X sekunder
Avatar billede r.hegaard Nybegynder
27. marts 2005 - 22:28 #2
OK. Det jeg har prøvet er at fjerne clienten, når jeg får fejl ved at forsøge at sende. Men hvordan kan det være, at det ikke virker at kalde destroy() på tråden og remove(num) på ArrayListen ?? (der oprettes en anden tråd, som kalder destroy() på client-tråden og remove(num) på ArrayListen).
Avatar billede arne_v Ekspert
27. marts 2005 - 22:30 #3
Fra java docs:

destroy

public void destroy()

    Destroys this thread, without any cleanup. Any monitors it has locked remain locked. (This method is not implemented.)

Bemærk den sidste note i parentesen !
Avatar billede arne_v Ekspert
27. marts 2005 - 22:31 #4
Kald interrupt i stedet for
Avatar billede r.hegaard Nybegynder
06. april 2005 - 13:09 #5
Jeg kunne ikke fået det til at virke på den måde, som jeg havde lavet, så jeg har været nød til at lave det på en anden måde.
Men tak for hjælpen alligevel. Lægger du et svar ?
Avatar billede arne_v Ekspert
06. april 2005 - 13:18 #6
ok
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