2011-01-31 3 views
0

Как сервер знает, какие пакеты он получает? (strcut, array ...)?tcp server question

PS: я знаю немой вопрос

+1

Что вы имеете в виду * какие пакеты *? Вы имеете в виду протокол? Если да, то на каком слое? –

+0

Нет никаких глупых вопросов, только тупые бомбардировщики. (На самом деле это не совсем так, есть * глупые вопросы, но это определенно не одно.) –

ответ

1

Это не его куча бит/байт. Приложение, использующее протоколы уровня приложений, решает, как интерпретировать эти биты/байты.

Точно так же, как память представляет собой кучу бит/байтов - указатель на структуру может быть принудительно указывать в любом месте, а структура может использоваться для чтения памяти, но данные могут быть бессмысленными. Логика вашего приложения гарантирует (надеюсь), что указатель struct применяется только к памяти, содержащей достоверные данные структуры. Аналогично, сетевое приложение должно решить, как интерпретировать биты в пакетах или потоке TCP.

Приложение может использовать известный протокол, чтобы решить, как интерпретировать эти байты. Например, HTTP-протокол указывает, что клиент должен передать, и сервер знает, как интерпретировать эти данные от клиента в соответствии с тем, как спецификация HTTP. Независимо от того, что клиент отправляет (например, если игровой клиент случайно отправил двоичный поток на HTTP-сервер), HTTP-сервер, тем не менее, попытается интерпретировать биты как запрос HTTP-клиента.

+1

Спасибо, я понимаю. – Kobe

+0

@vBx - С удовольствием помогаем –

1

TCP серверы получают поток байтов. Любая интерпретация вне этого зависит от логики приложения.