Witam.
Od jakiegoś czasu borykam się z małym problemem, polegającym na przesłaniu poprzez socket-y struktury, której składnikiem jest kontener vector z biblioteki STL.
Struktura:
struct Packet
{
int id;
std::string name;
std::vector<int> list;
};
Przykład wysyłania struktury przez aplikację klienta:
Packet * objPacket;
objPacket = new Packet();
objPacket->id = 1;
objPacket->name = "Packet name";
objPacket->list[0] = 12;
bytesSent = ::send(mainSocket, reinterpret_cast<char*>(objPacket), sizeof(*objPacket), 0);
delete objPacket;
Odbieranie danych przez aplikację serwera:
Packet * objPacket;
objPacket = new Packet();
bytesRecv = ::recv(socket, reinterpret_cast<char*>(objPacket), sizeof(*objPacket), 0);
std::cout << "Packet ID : " << objPacket->id << std::endl;
std::cout << "Packet Name : " << objPacket->name << std::endl;
std::cout << "List size : " << objPacket->list.size() << std::endl;
std::cout << objPacket->list[0] << std::endl;
delete objPacket;
Wartości pól id, name przesyłane są prawidłowo.
Natomiast problem pojawią się z wartościami elementów wektora list.
Rozmiar wektora jest odczytywany poprawnie, co sugeruje że część danych tego obiektu jest przesyłana poprawnie.
Niestety wszystkie pola wektora mają wartość równą 0.
Może ktoś z Was wie gdzie popełniam błąd lub jakie inne rozwiązanie mogę zastosować do przesłania tego typu struktury.
Program realizuje w środowisku Visual Studio dla systemu operacyjnego Windows ( XP, 7 ).
Pozdrawiam