Sto sviluppando un programma scritto in c++ che lavora in rete per mezzo di socket.
Come è possibile trasferire un oggetto da un server ad un client?
E' possibile usare il protocollo rpc per tale cosa? Avete documentazione?
Grazie mille, Denis.
Sto sviluppando un programma scritto in c++ che lavora in rete per mezzo di socket.
Come è possibile trasferire un oggetto da un server ad un client?
E' possibile usare il protocollo rpc per tale cosa? Avete documentazione?
Grazie mille, Denis.
'Oggetto' in che senso? Dei dati? In tal caso è proprio alle socket che ti dovrai affidare, non ad RPC.
Rilasciata Python FTP Server library 0.5.1
http://code.google.com/p/pyftpdlib/
We'll be those who'll make the italian folks know how difficult can be defecating in Southern California without having the crap flying all around the house.
Mi riferisco ad un oggetto generico tipo
Come faccio a spostarlo su e giù per la rete?Codice PHP:
class Oggetto {
private:
protected:
public:
char a[256];
int b;
struct Ciccio {
int a;
}
}
Se intendi dire le proprietà di un oggetto (cio è ricordare ad un altro programma che una variabile è uguale a 3) basta che mandi l'oggetto convertito tramite socket e poi lo leggi.
Esempio teorico
chi deve ricevere faràcodice://per mandare si usa la funzione send send(sock,reinterptet_cast<void*>(&Cl1),sizeof(MiaClasse));
In questo modo Cls sarà uguale a Cl1 anche se non sono nello stesso programma.codice:MiaClasse Cls; recv(sock,reinterpret_cast<void*>(&Cls),sizeof(MiaClasse));
"Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)
"Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)
http://xvincentx.netsons.org/programBlog
Io credo che lui intendesse l'oggetto vero e proprio (in questo caso una classe comprensiva di metodi).Se intendi dire le proprietà di un oggetto (cio è ricordare ad un altro programma che una variabile è uguale a 3) basta che mandi l'oggetto convertito tramite socket e poi lo leggi.
Purtroppo non conosco C++. In python la cosa è fattibile tramite un modulo chiamato pickle che permette di convertire in byte stream l'oggetto e "riconvertirlo" allo stato originario. In pratica la soluzione ideale che servirebbe a te per spedirlo tramite socket.
Sicuramente qualcosa di simile sarà disponibile anche per C++.
Rilasciata Python FTP Server library 0.5.1
http://code.google.com/p/pyftpdlib/
We'll be those who'll make the italian folks know how difficult can be defecating in Southern California without having the crap flying all around the house.
Supponiamo che io lato server instanzi l'oggetto:
Oggetto *oggetto= new Oggetto();
oggetto->b= 12;
Ora voglio mandare al client l'oggetto *oggetto in modo che lui poi possa accedere alla variabile 'b' ed ottenere il valore che esso contiene (12). Come posso fare?
Ti ho scritto sopra come si fa, anche se in modo sommario.
Mandi tramite socket all'altro pc l'oggetto in bytes e poi lo ricomponi.
Se non vuoi usare i socket puoi anche salvare l'oggetto su file.
"Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)
"Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)
http://xvincentx.netsons.org/programBlog
Sto studiando la tua soluzione che mi sembra molto valida. Potresti indicarmi dove trovare maggioni informazioni su tale cosa? In particolar modo non mi è chiaro cosa significhi
<void*>
Esiste una tecnica per fare in modo che colui che riceve l'oggetto sia in grado di capire che oggetto esso sia?
Questa mia esigenza nasce dal fatto che non saprei come gestire la comunicazione prevedendo molti oggetti diversi tra loro.
Grazie mille, Denis.
XWolverineX ti ha descritto come si fà giustamente.Originariamente inviato da denis76
Sto studiando la tua soluzione che mi sembra molto valida. Potresti indicarmi dove trovare maggioni informazioni su tale cosa? In particolar modo non mi è chiaro cosa significhi
<void*>
Esiste una tecnica per fare in modo che colui che riceve l'oggetto sia in grado di capire che oggetto esso sia?
Questa mia esigenza nasce dal fatto che non saprei come gestire la comunicazione prevedendo molti oggetti diversi tra loro.
Grazie mille, Denis.
posso aggiungere:
un'oggetto, come dati e quantaltro non sono altro che sequenze di byte.
Il client e il server riconoscono una struttura perchè chi progetta appunto il client e il server sà cosa si devono comunicare quindi...
sul client farai:
struct t_bikeData
{
t_matrixComp mat[3];
};
e altrettatnto sul server
sia dal client che dal server invii così:
t_bikeData data;
g_bike[idN].GetBikeData(&data);
un esempio di invio dei dati:
GAMEMSG_OKAY msgOkay;
msgOkay.Data = data;
strcpy(msgOkay.nome, NomePlayer);
msgOkay.b=b;
//invio
send (socket, (const char*) &msgOkay, sizeof(GAMEMSG_OKAY), 0);
//ricezione
char rec[512];
int bytes;
bytes = recv((SOCKET)wParam, rec, sizeof(GAMEMSG_OKAY), 0);
GAMEMSG_OKAY* pMsg = (GAMEMSG_OKAY*) &rec;
g_bike[x].SetBikeData(&pMsg->Data);
strcpy(CiaoFratello, msgOkay.nome);
a=msgOkay.b;
//naturalmente i dati inviati sono meno di 512 bytes
la struct GAMEMSG_OKAY te la faì da solo...
ciao
Oki.lib Libreria per creare il proprio Engine del sound nei propri progetti
http://www.twork.it/public/oki/guestbook.asp
Sistemi di Gestione Studio e Sviluppo per giochi a pronostici
http://www.twork.it/programmi/programmi.html
Praticamente con il cast a char trasformi l'oggetto in un semplice flusso di byte e nella ricezione fai il contrario: flusso di byte a oggetto
"Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)
"Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)
http://xvincentx.netsons.org/programBlog