mysql 协议的query包及解析
生活随笔
收集整理的這篇文章主要介紹了
mysql 协议的query包及解析
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
git
https://github.com/sea-boat/mysql-protocol
概況
mysql客戶端可以用query包向服務端發送一個基于文本查詢。
mysql通信報文結構
| int<3> | payload長度 | 按照the least significant byte first存儲,3個字節的payload和1個字節的序列號組合成報文頭 |
| int<1> | 序列號 | |
| string | payload | 報文體,長度即為前面指定的payload長度 |
query包
Payload
1 [03] COM_QUERY string[EOF] the query the server shall execute更多詳情 : https://dev.mysql.com/doc/internals/en/com-query.html
query包類
/*** * <pre><b>mysql query packet.</b></pre>* @author * <pre>seaboat</pre>* <pre><b>email: </b>849586227@qq.com</pre>* <pre><b>blog: </b>http://blog.csdn.net/wangyangzhizhou</pre>* @version 1.0* @see http://dev.mysql.com/doc/internals/en/com-query.html*/ public class QueryPacket extends MySQLPacket {public byte flag;public byte[] message;public void read(byte[] data) {MySQLMessage mm = new MySQLMessage(data);packetLength = mm.readUB3();packetId = mm.read();flag = mm.read();message = mm.readBytes();}public void write(ByteBuffer buffer) {int size = calcPacketSize();BufferUtil.writeUB3(buffer, size);buffer.put(packetId);buffer.put(COM_QUERY);buffer.put(message);}@Overridepublic int calcPacketSize() {int size = 1;if (message != null) {size += message.length;}return size;}@Overrideprotected String getPacketInfo() {return "MySQL Query Packet";}}========廣告時間========
鄙人的新書《Tomcat內核設計剖析》已經在京東銷售了,有需要的朋友可以到 https://item.jd.com/12185360.html 進行預定。感謝各位朋友。
為什么寫《Tomcat內核設計剖析》
=========================
總結
以上是生活随笔為你收集整理的mysql 协议的query包及解析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 水滴保是正规的吗 水滴保是靠谱的吗
- 下一篇: linux cmake编译源码,linu