Если я правильно понимаю, вы спрашиваете: «Как сервер понимает информацию, которую клиент посылает ей»?
Если это то, что вы спрашиваете, ответ прост: заранее согласовано, что структуры данных, которые каждый использует, будут совместимы. То есть Вы решаете, какой протокол связи будет у вас раньше времени.
Так, например, если у меня есть клиент-серверное приложение, к которому клиент подключается и может запрашивать такие вещи, как «время», «дата» и может сказать «settime» и «setdate», мне нужно написать свой сервер таким образом, что он поймет эти команды.
Очевидно, что в приведенном выше случае это тривиально, так как это будет просто текстовый протокол. Но допустим, вы пишете приложение, которое будет возвращать структуру информации, т.е.
struct Person {
char* name;
int age;
int heightInInches;
// ... other fields ...
};
Вы можете выписать всю структуру с сервера / клиента. В этом случае есть несколько вещей, о которых следует знать:
- Вам нужно правильно hton / ntoh
- Вы должны убедиться, что ваш клиент и сервер могут понимать рассматриваемую структуру.
- Вам может потребоваться или нет выравнивание на границе 4B (потому что, если вы этого не сделаете, разные компиляторы C могут делать разные вещи, которые могут сжечь вас между клиентом и сервером, а может и нет).
В общем, однако, при написании клиент / серверного приложения, самое важное, что нужно сделать - это протокол связи .
Хотя я не уверен, что это вполне отвечает на ваш вопрос. Это то, что вам было нужно, или вы спрашивали больше о том, как именно вы используете функции send / recv?