Sunday, 15 May 2011

c++ - Sending object of a class from client to server using serialization -



c++ - Sending object of a class from client to server using serialization -

i have 2 classes client.cpp , server.cpp using tcp sockets , message sent client side server. in client have class employee having different values follows:

class employee{ int emp_id; char emp_name; float emp_weight; };

i have made object of employee as:

employee *ptr=new employee(); ptr->emp_id=10; ptr->emp_weight=50.2; memcpy(ptr->emp_name,"message",7);

now passing info client as:

send(socket_connection,(char*)&ptr,sizeof(ptr),null);

on server side recieving as:

char *server_buffer=new char[256]; recv(socket_connection,server_buffer,sizeof(employee),null); employee *pointer=(employee*) server_buffer; char b[256]; memcpy(b,pointer->emp_name,sizeof(pointer->emp_name)); cout << "got info "<< pointer->emp_name << "\n"; cout << "got info "<< ptr->emp_id << "\n"; cout << "got info "<< ptr->emp_weight << "\n";

my question is:

why getting garbage values in output , how resolve ?

kindly help me understand this.i doing activity understanding regarding serialization , deserialization.

your employee class has 1 character emp_name member. cannot fit string "message" 1 character. attempting re-create excess characters memory of emp_weight, creating garbage. prepare declaring

char emp_name[128];

on receive size mandatory check homecoming value recv. may less bytes expect, , when happens must phone call recv 1 time again more bytes.

c++ sockets serialization client-server deserialization

No comments:

Post a Comment