Мне нужно отправить данные сетки через TCP с одного компьютера на другой ... Эти ячейки могут быть довольно большими. Мне сложно подумать о том, какой лучший способ отправить их через TCP будет, поскольку я мало знаю о сетевом программировании.Отправка больших кусков данных через Boost TCP?
Вот моя основная структура класса, что мне нужно, чтобы вписаться в буфер для отправки через TCP:
class PrimitiveCollection
{
std::vector<Primitive*> primitives;
};
class Primitive
{
PRIMTYPES primType; // PRIMTYPES is just an enum with values for fan, strip, etc...
unsigned int numVertices;
std::vector<Vertex*> vertices;
};
class Vertex
{
float X;
float Y;
float Z;
float XNormal;
float ZNormal;
};
Я использую библиотеку Boost, и их TCP вещи ... это довольно простой в использовании , Вы можете просто заполнить буфер и отправить его через TCP.
Однако, конечно, этот буфер может быть только настолько большим, и у меня может быть до 2 мегабайт данных для отправки.
Так что было бы лучшим способом получить вышеуказанную структуру класса в буферах, необходимых и отправленных по сети? Мне также нужно было бы десериализовать на получающем конце.
Любые указания в этом отношении будут высоко оценены.
EDIT: Я понимаю, что это еще одна проблема, которая не является специфической для Boost ... Это больше проблема с перекосом данных и их отправкой. Однако мне все еще интересно узнать, есть ли у Boost что-нибудь, что может немного отвлечь его.
Ну, независимо от того, какой API вы используете, один простой способ - сначала отправить небольшой 4 байтовый hedaer, описывающий, насколько большой будет набор данных, а затем просто продолжать отправлять данные, пока вы не закончите. На самом деле нет предела. Вы также можете сжать данные перед отправкой, в зависимости от ваших вычислительных потребностей. Многое зависит от конкретной проблемы. – BobbyShaftoe