MySQL протокол?

Сижу, разбираюсь с протоколом MySQL по forge.mysql.com/wiki/MySQL_Internals_ClientServer_...

итак, начинаем. Коннектимся, в случае доступности сервера, как и положено, получаем

34 00 00 00 0A 34 2E 31 2E 32 32 00…

( 34 00 00) первые 3 байта — длина пакета

( 00 ) четвертый байт — номер пакета.

далее — версия сервера и прочая инфа по конфигу сервера.(строка с нулём на конце)

НО если вдруг превышен лимит коннектов к серверу — мы получаем от него ошибку «Host '***' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts', то есть такой пакет:

7C 00 00 00 FF 69 04 48 6F 73 74 20

тут так же, 4 байта — заголовок (длина пакета + номер пакета), но что дальше за три байта?

Как именно отделять пакеты с подобными ошибками от нормальных? откуда эти байты „FF 69 04“? где вообще можно найти полную инфу по всем возможным вариантам ответов сервера? Есть ли opensource проекты реализации mysql протокола? Или может я что-то пропустил когда читал по ссылке выше? Помогите пожалуйста.



p.s. да, я изобретаю велосипед, но он мне сейчас очень нужен :)
  • Вопрос задан
  • 4198 просмотров
Пригласить эксперта
Ответы на вопрос 4
alexmuz
@alexmuz
forge.mysql.com/wiki/MySQL_Internals_ClientServer_Protocol#Error_Packet
1 field_count, always = 0xff
2 errno (little endian)

То есть 69 04 — это errno.
Все пакеты с ошибками начинаются на 0xff, так можно отличать.
Ответ написан
@galaxy
Есть ли opensource проекты реализации mysql протокола?

эм… mysql?
Ответ написан
Комментировать
olegy
@olegy
Чем закончилось «изобретение велосипеда»?
Я сейчас тоже делаю серверную часть — нужно что бы стандартный MySQL клиент рулил платой. К сожалению чего то готового (кроме MySQL proxy) не нашел
Ответ написан
Комментировать
Sannis
@Sannis
Расскажите, зачем вам это понадобилось? :)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы