Avatar billede Spotgun Seniormester
24. februar 2006 - 16:47 Der er 6 kommentarer og
1 løsning

TcpListener og Socket - Synkron vs. Asynkron?

Jeg er ved at lave en client-server løsning, hvor klienterne skal modtage data fra serveren. Så langt, så godt!

Jeg har pt. valgt at lave en TcpListener.AcceptSocket(), da klienten udelukkende skal snakke med serveren, og kun må have en enelt forbindelse åben ad gangen. Problemet er dog, at AcceptSocket() er et blokerende kald, der først stopper når min en forbindelse er opnået. Stopper jeg mit program, kører tråden stadig videre, indtil næste forbindelse fra serveren er sket.

Er der nogen mulighed for at stoppe tråden med min TcpListener i (på en pæn måde)? Eller skal jeg i stedet lave klientens "lytte funktion" asynkron, og på en eller anden måde kontrollere at der kun er en enkelt forbindelse fra serveren ad gangen? Ville det scenarie være nemmere at stoppe når klienten skal lukkes ned?
Avatar billede dr_chaos Nybegynder
24. februar 2006 - 16:50 #1
bruger du c# 2.0 ?
Avatar billede Spotgun Seniormester
24. februar 2006 - 16:55 #2
Jep... Jeg er ved at læse lidt om nogle asynkrone løsningsmodeller, men mangler vist lige den dér aha-oplevelse, for at få wrappet min hjerne helt omkring emnet :)
Avatar billede dr_chaos Nybegynder
24. februar 2006 - 16:59 #3
prøv at kigge på backgroundworker.
Det kan være din aha oplevelse.
Avatar billede Spotgun Seniormester
24. februar 2006 - 17:02 #4
TcpListener delen kører allerede i en seperat tråd, og resten af klienten i hovedtråden, og selvom jeg kalder Abort på listener-tråden, ser det ud til at den stadig hænger og venter på et sidste kald...

Det lader til at jeg skal over i Socket.Listen(1) i stedet for... Spørgsmålet er så bare om den er nemmere at stoppe igen :)
Avatar billede dr_chaos Nybegynder
24. februar 2006 - 17:10 #5
kan man ikke kalde stop() eller dispose() på tcplistener
Avatar billede Spotgun Seniormester
24. februar 2006 - 17:40 #6
Umiddelbart ser det ud til at fungere med TcpListener.Stop(). Den får åbenbart lukket den underlæggende socket ned, som ellers normalt står og venter... Så kan man undre sig over hvorfor jeg ikke har prøvet det før :D
Tror bare jeg var for fokuseret på den socket som TcpListeneren reelt står og lytter på... Lægger du et svar?
Avatar billede dr_chaos Nybegynder
24. februar 2006 - 17:44 #7
hehe jeg kom bare med et foreslag :D
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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