Avatar billede oddi Nybegynder
18. april 2009 - 13:47 Der er 4 kommentarer og
1 løsning

Opbygning af Chat server

Hej Eksperter.

Jeg har tænkt mig at lave C++ projekt for at få tiden til at gå...

Jeg har valgt at lave en chat server i C++ og den skal køre på et Unix/linux system.

Jeg er kommet lidt i tvivl om hvordan jeg skal opbygge serveren. Jeg er i tvivl om jeg skal lave en fork, og lave en ny process hver gang en bruger logger sig ind, eller om jeg skal lave en tråd for hver bruger?
Der skal jo være en smule kommunikation mellem de brugere som er online på serveren. F.eks når en logger sig på skal alle hans kontakter vide at han er logget på osv...

Hvordan ville i opbygge sådanne server mht. om det skal være fork eller tråde? Eller er der måske en helt tredje måde?
Avatar billede arne_v Ekspert
18. april 2009 - 14:00 #1
Fork af processer duer ikke når der skal kommunikeres mellem klienter.

Der er 2 muligheder:

1) En thread per klient. pthreads

2) Bruge udelukkende non-blocking operationer og lade en enkelt process/tråd gøre det hele.
Avatar billede oddi Nybegynder
18. april 2009 - 14:12 #2
Jeg havde det lidt på fornemmelsen at jeg ikke kunne bruge fork af processer.

Jeg har brugt Fork nogle gange før til andre programmer, har ikke brugt pthreads før. Ville du anbefale pthreads istedet for non-blocking?
Avatar billede arne_v Ekspert
18. april 2009 - 14:19 #3
pthreads vil nok give en pænere kode.

Den skalerer dog ikke så godt, så jeg ville ikke bruge det til > 1000 samtidige klienter.
Avatar billede oddi Nybegynder
18. april 2009 - 16:17 #4
ok tak for det arne_v, smid et svar
Avatar billede arne_v Ekspert
18. april 2009 - 16:24 #5
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