Avatar billede hanzy Nybegynder
25. december 2006 - 23:15 Der er 7 kommentarer

Tråde der læser data fra en socket. (Fryser BGF)

Jeg kører et java program som scanner nogle porte og finder nogle clienter den kan tale med.
For hver forbindelse oprettes der en ny tråd som bl.a. indeholder en brugergrænseflade for den forbindelse.
Når en "samtale" startes med en client vil scanneren altid svare med det samme og afvente nye informationer fra clienten.
Her står den så ved en readLine() fra en BufferedReader, og venter på et svar fra clienten.

Problemet er, at så længe der afventes et svar fryser alle andre brugergrænseflader end clienten. De opdateres ikke før hele samtalen er slut, eller forbindelsen afbrydes.
Idéen er jo at scanneren skal kunne snakke med flere clienter ad gangen uden at de forstyrer hinanden.
Er der en nem måde at gøre det på ? Måske en anden måde at læse, eller en form for prioritering eller noget ?
Avatar billede erikjacobsen Ekspert
25. december 2006 - 23:34 #1
For hver forbindelse, har du så en tråd til socket-delen, og en tråd til grænsefladen?
Avatar billede hanzy Nybegynder
27. december 2006 - 17:05 #2
Hmm, nej jeg mener bare jeg opretter en ny grænseflade inde fra tråden.
Jeg var ikke klar over at brugergrænsefladen skulle have sin egen tråd.
Men det giver selvfølgelig meget god mening.

Det må jeg i vert fald afprøve så snart jeg har mulighed for det.

Til gengæld mener jeg nu også at selve brugergrænsefladen til den forbindelse som står og læser blev frosset. Jeg får ikke engang noget frem før hele samtalen er slut, og det virker lidt sært idet selve samtalen jo sender data til et felt i brugergrænsefladen, så man skulle da tro den ville blive opdateret.
Men det kunne måske også skyldes at den ikke har sin egen tråd...

Det må jeg i vert fald lige afprøve. Det lyder somom det godt kunne være det der er galt.
Avatar billede hanzy Nybegynder
28. december 2006 - 02:14 #3
Du havde helt ret, jeg skulle køre brugergrænsefladen som en tråd...
Jeg havde rodet godt rundt i det, havde en tråd som kørte brugergrænsefladen.

Der var egentlig ikke behov for en tråd til socket forbindelsen, jeg lagde den bare ind i den tråd der kørte BGF'en for forbindelsen, og nu ser det ud til at køre ganske fint.

Hvis du skriver det som et svar kan jeg godkende det.
Avatar billede erikjacobsen Ekspert
28. december 2006 - 09:57 #4
Det lyder godt. Jeg samler slet ikke på point, tak. Svar selv, accepter eget svar.
Avatar billede hanzy Nybegynder
28. december 2006 - 12:04 #5
Heh ok tak
Avatar billede hanzy Nybegynder
28. december 2006 - 12:05 #6
.
Avatar billede erikjacobsen Ekspert
28. december 2006 - 12:45 #7
Husk at acceptere dit svar.
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