Avatar billede mickni33 Nybegynder
20. maj 2007 - 12:49 Der er 9 kommentarer og
3 løsninger

socket kommunikation

Hvis jeg har 3 socket clienter der kommunikere med en serversocket..

Vil den første klient så ikke spærre for adgang til de to næste klienter, hvis der f.eks opstod et problem med at den første klient hænger.

Hvordan klare man det problem? (hvis det er et problem :-))
Avatar billede arne_v Ekspert
20. maj 2007 - 15:05 #1
Det afhænger af design af din server.

Hvis du accepter en socket og starter en ny tråd til at håndtere den client, så nej.
Avatar billede mickni33 Nybegynder
20. maj 2007 - 15:12 #2
ok dvs lige efter der er accepteret fra serveren laves en tråd dynamisk?

Så kan man altså ikke køre uden at have tråde med ?
Avatar billede arne_v Ekspert
20. maj 2007 - 15:20 #3
Jo hvis du bruger select på de sockets.

Men den trådede model er langt nemmere at kode uden fejl.
Avatar billede lasserasch Juniormester
20. maj 2007 - 15:23 #4
Jo kan man. Men kun med en klient af gangen så. Hvis du vil have flere samtidige forbindelser, så skal du bruge tråde som arne_v siger.

Tjek min eksempel kode. Den viser hvordan det kan gøres...

http://www.skare.dk/tcpkommunikation.zip

/Lasse
Avatar billede mickni33 Nybegynder
20. maj 2007 - 15:34 #5
tak for svar... jeg kigger lige eksemplet senere på dagen
Avatar billede arne_v Ekspert
20. maj 2007 - 15:36 #6
man kan godt have en tråd servicere flere klienter hvis man koder lidt
Avatar billede lasserasch Juniormester
20. maj 2007 - 15:36 #7
Ok arne_v. vidste jeg så ikke at man kunne. Men igen er det vel også bedre at bruge flere tråde. Hvis noget hænger i en tråd, så påvirkes de andre tråde vel ikke nødvendigvis af dette! Eller er jeg forkert på der? Det er i hvert fald den fornemmelse jeg har fået igennem mit arbejde med sockets...
Avatar billede arne_v Ekspert
20. maj 2007 - 16:15 #8
hvis antal klienter er begrænset - lad os sige under 100 - så er en tråd per
klient en glimrende løsning og langt det nemmeste at kode
Avatar billede md_craig Nybegynder
21. maj 2007 - 16:20 #9
Og omvendt har du flere tusinde klienter så vil en tråd til hver "floode" din CPU og du ender i et helvede...

Så det er et spørgsmål om hvor skaleret en serverløsning vi har med at gøre... Treadpools mm. kan være en nyttig ting her, og så stedet se hvert Request/Respose eller hvad man vil kalde det være et "job" for sig... når en klient spørg vil den så få queued et stykke arbejde (arbejdet som skal levere et response i sidste ende formentlig)...

Så vil man fx have 25 samtidige tråde stående og behandle klient requests, hvilket gør at hvis en klient fejler, så spærer den ikke for de andre i og med der stadig er 24 tråde at arbejde med.

Samtidig så får vi heller ikke performance problemer fordi at Schedulerings arbejdet af trådenen bliver en stører arbejdsbyrde end det egentlige arbejde hver tråd udfører...

Men som arne påpeger, har man et relativt lavt antal af klienter så er det simpleste at give hver en tråd.
Avatar billede mickni33 Nybegynder
03. juni 2007 - 20:48 #10
læg lige et svar, alle.
Avatar billede arne_v Ekspert
03. juni 2007 - 20:57 #11
.
Avatar billede lasserasch Juniormester
03. juni 2007 - 22:02 #12
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
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