/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Sockets i C
Fra : Kim Ingemann


Dato : 06-08-02 21:34

Hej.

Jeg er igang med at lave en server, der kan kan have flere klienter
forbundet på samme tid. Disse klienter kan derfor skrive til serveren og
få svar igen. Det er jo nok ikke første gang at det er blevet lavet. :)

Jeg har dog et problem. Jeg kan sagtens smide tekst i hovedet på serveren
og få response fra serveren. Jeg kan bare ikke få den til at forbinde
de forskellige klienters input. De sidder alle delt op fork().

Hvad skal jeg gøre?

Den skal have samme opbygning som de fleste chat-servere man ser i dag,
fx. ircd.

--
Mvh. Kim Ingemann

 
 
Kent Friis (06-08-2002)
Kommentar
Fra : Kent Friis


Dato : 06-08-02 22:18

Den Tue, 06 Aug 2002 22:33:46 +0200 skrev Kim Ingemann:
>Hej.
>
>Jeg er igang med at lave en server, der kan kan have flere klienter
>forbundet på samme tid. Disse klienter kan derfor skrive til serveren og
>få svar igen. Det er jo nok ikke første gang at det er blevet lavet. :)
>
>Jeg har dog et problem. Jeg kan sagtens smide tekst i hovedet på serveren
>og få response fra serveren. Jeg kan bare ikke få den til at forbinde
>de forskellige klienters input. De sidder alle delt op fork().
>
>Hvad skal jeg gøre?
>
>Den skal have samme opbygning som de fleste chat-servere man ser i dag,
>fx. ircd.

Umiddelbart er der to muligheder:

Uden fork():

Brug i stedet select() til at fortælle når der er data på dine file
descriptors, og sørg for at sende det ud til de andre klienter.

Med fork():

Med separate processer er du nødt til at have en måde for dem at
kommunikere internt, fx. pipes eller shared memory. Pipes vil nok give
nøjagtigt samme resultat som uden fork(), nemlig at du skal have en
select() til at chekce dine pipes. Hvis du bruger shared memory, så
kig på shmat() og shmdt().

Umiddelbart vil jeg nok anbefale at forsøge uden fork(), det er nok
lettere at overskue.

Mvh
Kent
--
IE is the only thing capable of making Netscape look good
- D. Spider in comp.os.linux.advocacy

Kim Ingemann (07-08-2002)
Kommentar
Fra : Kim Ingemann


Dato : 07-08-02 20:47

On Tue, 06 Aug 2002 23:17:48 +0200, Kent Friis wrote:
> Umiddelbart er der to muligheder:
>
> Uden fork():
>
> Brug i stedet select() til at fortælle når der er data på dine file
> descriptors, og sørg for at sende det ud til de andre klienter.
>
> Med fork():
>
> Med separate processer er du nødt til at have en måde for dem at
> kommunikere internt, fx. pipes eller shared memory. Pipes vil nok give
> nøjagtigt samme resultat som uden fork(), nemlig at du skal have en
> select() til at chekce dine pipes. Hvis du bruger shared memory, så
> kig på shmat() og shmdt().
>
> Umiddelbart vil jeg nok anbefale at forsøge uden fork(), det er nok
> lettere at overskue.
>
> Mvh
> Kent

Jeg siger mange tak. Jeg prøvede lidt af hvert og fandt faktisk ud af en
måde at behandle sockets på vha. select(). Det virker som det skal nu.

--
Mvh. Kim Ingemann

Søg
Reklame
Statistik
Spørgsmål : 177485
Tips : 31964
Nyheder : 719565
Indlæg : 6408408
Brugere : 218885

Månedens bedste
Årets bedste
Sidste års bedste