PDA

View Full Version : socket in C...il server deve stampare a video sul client


thefrog
16-05-2005, 15:44
ciao

devo fare il tic tac toe in C con un server che ha il gioco ei due client che giocano su macchine diverse

devo trovare un modo per fare in modo che il client possa stampare la tabella del gioco
il gioco è sul server quindi l'ideale sarebbe che il server potesse stampare su un buffer verso un socket aperto con il client (tipo invece di stampare la tabella sul terminale del server la dovrebbe stampare sul terminale del client)

sicuramente ci sarà qualche funzione predefinita che permette di fare una cosa del genere ma io so poco e nulla di C quindi....spero che qualcuno mi sappia aiutare

un'altra cosa un pò nebbiosa è che vorrei stabilire un socket bidirezionale tra client e server (non so se sia fattibile)

insomma sono un pò in alto mare...ogni aiuto è buono :D

grazie!!

Fenomeno85
16-05-2005, 15:51
ciao

devo fare il tic tac toe in C con un server che ha il gioco ei due client che giocano su macchine diverse

devo trovare un modo per fare in modo che il client possa stampare la tabella del gioco
il gioco è sul server quindi l'ideale sarebbe che il server potesse stampare su un buffer verso un socket aperto con il client (tipo invece di stampare la tabella sul terminale del server la dovrebbe stampare sul terminale del client)

sicuramente ci sarà qualche funzione predefinita che permette di fare una cosa del genere ma io so poco e nulla di C quindi....spero che qualcuno mi sappia aiutare

un'altra cosa un pò nebbiosa è che vorrei stabilire un socket bidirezionale tra client e server (non so se sia fattibile)

insomma sono un pò in alto mare...ogni aiuto è buono :D

grazie!!

la tabella dove è contenuta?? sto gioco mica lo conosco :D cmq basta che mandi la struttura di questa tabella al client che lo richiede con send :)

~§~ Sempre E Solo Lei ~§~

VICIUS
16-05-2005, 16:00
ciao

devo fare il tic tac toe in C con un server che ha il gioco ei due client che giocano su macchine diverse

devo trovare un modo per fare in modo che il client possa stampare la tabella del gioco
il gioco è sul server quindi l'ideale sarebbe che il server potesse stampare su un buffer verso un socket aperto con il client (tipo invece di stampare la tabella sul terminale del server la dovrebbe stampare sul terminale del client)

sicuramente ci sarà qualche funzione predefinita che permette di fare una cosa del genere ma io so poco e nulla di C quindi....spero che qualcuno mi sappia aiutare
E' semplice. Una volta che il client si è collegato al server sostituisci il file descriptor di stdout con quello del socket in questo modo tutto quello che arriva dal server va a finire sullo schermo del client. Nel Server non dovrai far altro che usare la write per scrivere sui socket dei due client. Controlla sulla pagna di manuale la funzione dup e dup2


un'altra cosa un pò nebbiosa è che vorrei stabilire un socket bidirezionale tra client e server (non so se sia fattibile)

I socket sono bidirezioni per definizione. Puoi scrivere e leggere contemporaneamente.

ciao ;)

thefrog
16-05-2005, 16:02
la tabella dove è contenuta?? sto gioco mica lo conosco :D cmq basta che mandi la struttura di questa tabella al client che lo richiede con send :)

~§~ Sempre E Solo Lei ~§~

la tabella viene stampata a ogni giro dal server, è tenuta in un array lienare che poi con dei \n diventa na tabella :stordita:

BASTA CHE MANDI .... facile a dirlo

cmq se vai su msn vedi tic tac toe il gioco è quello :stordita:

dovrei trovare il modo di mandare delle stringhe al client e farglele stampare ma non sono capace :stordita:

VICIUS
16-05-2005, 16:03
la tabella dove è contenuta?? sto gioco mica lo conosco :D cmq basta che mandi la struttura di questa tabella al client che lo richiede con send :)

~§~ Sempre E Solo Lei ~§~
Mai sentito parlare di Tris :p

ciao ;)

Fenomeno85
16-05-2005, 16:18
Mai sentito parlare di Tris :p

ciao ;)

ahh ok :D e chi lo usa msn :D

~§~ Sempre E Solo Lei ~§~

thefrog
16-05-2005, 16:27
E' semplice. Una volta che il client si è collegato al server sostituisci il file descriptor di stdout con quello del socket in questo modo tutto quello che arriva dal server va a finire sullo schermo del client. Nel Server non dovrai far altro che usare la write per scrivere sui socket dei due client. Controlla sulla pagna di manuale la funzione dup e dup2


I socket sono bidirezioni per definizione. Puoi scrivere e leggere contemporaneamente.

ciao ;)


puoi spiegarmi cosa sarebbe il file descriptor di stdout? e come faccio a sostituirlo?

non ho mai usato C e sono completamente in alto mare :stordita:

intanto grazie mille ;)

Fenomeno85
16-05-2005, 16:29
puoi spiegarmi cosa sarebbe il file descriptor di stdout? e come faccio a sostituirlo?

non ho mai usato C e sono completamente in alto mare :stordita:

intanto grazie mille ;)

allora prima ti conviene imparare il c -> poi fai programmazione di rete no? :D

http://www.lilik.it/~mirko/gapil/gapilsu86.html ho trovato la prima cosa

~§~ Sempre E Solo Lei ~§~

thefrog
16-05-2005, 17:18
allora prima ti conviene imparare il c -> poi fai programmazione di rete no? :D

http://www.lilik.it/~mirko/gapil/gapilsu86.html ho trovato la prima cosa

~§~ Sempre E Solo Lei ~§~


hai tanta tanta ragione....ma devo fare un esame quindi purtroppo lo devo fare al volo :O

thefrog
17-05-2005, 08:55
siccome sono duro come le pine verdi, è un ora che cerco dup, dup2 e simili sui manuali ma non capisco bene come si usano, anche perchè non c'è nemmeno un esempio :| mi fate un esempio di codice?

proprio la riga di come si usa sta cosa mi ci vorebbe

grazie

VICIUS
17-05-2005, 12:55
siccome sono duro come le pine verdi, è un ora che cerco dup, dup2 e simili sui manuali ma non capisco bene come si usano, anche perchè non c'è nemmeno un esempio :| mi fate un esempio di codice?

proprio la riga di come si usa sta cosa mi ci vorebbe

grazie
dovrebbe essere qualcosa tipo questa:
{
[...]
int fd_del_socket_attaccato_al_server;
[... codice per connettersi al server ...]

/* sostituisce il fd di stdout con quello del socket */
dup2 (fileno (stdout), fd_del_socket_attaccato_al_server);

[... alctro codice del prorgamma ...]
}

ciao ;)

Fenomeno85
17-05-2005, 13:19
domanda stupida ma perchè vuoi replicare o sostituire nella tabella globale il valore di un paramentro già esistente??

Crea un nuovo identificatore :)

~§~ Sempre E Solo Lei ~§~

VICIUS
17-05-2005, 17:21
domanda stupida ma perchè vuoi replicare o sostituire nella tabella globale il valore di un paramentro già esistente??

Crea un nuovo identificatore :)

~§~ Sempre E Solo Lei ~§~
Uhm parli con me ? :stordita:

ciao ;)