PDA

View Full Version : [C] Server + client gioco carte


Futuregames
16-08-2010, 18:23
Salve a tutti, dovrei progettare un server ed uno (o più) client per un gioco di carte a due giocatori.

Premetto subito che non sono in cerca strettamente di codice ma di "teoria su come farlo" :D

Il funzionamento sarebbe questo:

Il server si "accende" ed attende la connessione di un client
Ora il client ed il server attendono l'arrivo di un secondo giocatore
All'arrivo del secondo parte il gioco


Tecnicamente gestirei il tutto con i thread ma le ipotesi per farlo sarebbero due:

Il server lancia due thread per attendere la connessione di due client. Una volta connessi parte il gioco.
Il server fa un fork e crea un processo figlio che, a sua volta, crea un altro processo figlio. Questi accettano la connessione, si chiudono e fanno partire il gioco nel padre.


Ora qual'è il più "giusto"? Gestire il tutto con i processi o semplicemente con i thread con variabili passate e/o statiche?

Grazie mille

tuccio`
16-08-2010, 18:32
per non saperne niente mi viene da chiedermi se ti servono tutti sti thread per un gioco a turni che ha pure un numero fissato di giocatori

Futuregames
16-08-2010, 18:34
per non saperne niente mi viene da chiedermi se ti servono tutti sti thread per un gioco a turni che ha pure un numero fissato di giocatori

i thread/processi li metto per accettare due connessioni "in contemporanea" e chiedere ad ognuno il nome del giocatore :)

cionci
16-08-2010, 19:46
Tecnicamente gestirei il tutto con i thread ma le ipotesi per farlo sarebbero due:

Il server lancia due thread per attendere la connessione di due client. Una volta connessi parte il gioco.
Il server fa un fork e crea un processo figlio che, a sua volta, crea un altro processo figlio. Questi accettano la connessione, si chiudono e fanno partire il gioco nel padre.

Il primo è un programma multi-thread, il secondo è un programma multi-processo. Le differenze sono enormi, soprattutto nelle modalità di comunicazione con fra le due entità.
In ogni caso con due socket puoi anche non usare thread o processi, basta gestire i socket in modo asincrono usando la select.