我知道Memcached可以與客戶端協商協議,但我對服務器使用的協商機制一無所知(在因特網上都找不到任何東西)。任何想法?Memcached如何協商協議?
回答
正如您在中所看到的,它都基於服務器接收到的第一個字節。如果它是一個神奇的請求字節(0x80),那麼它認爲客戶端嘗試使用二進制協議,否則它將使用ascii協議。
感謝您的回覆。我如何測試使用netcat? –
對於ASCII碼,我想這很簡單,只需使用「echo -e'stats conns \ r \ n'| nc localhost 11211」即可。對於二進制,你可以做同樣的事情,但使用像「echo -e'\ x80 ....'| nc ...」,只需讀取二進制原型desc。 –
這工作:** echo -e'\ x80'| nc主機端口**非常感謝,很有趣;) –
在功能try_read_command:
if ((unsigned char)c->rbuf[0] == (unsigned char)**PROTOCOL_BINARY_REQ**) {
c->protocol = binary_prot;
} else {
c->protocol = ascii_prot;
}
typedef enum {
PROTOCOL_BINARY_REQ = 0x80,
PROTOCOL_BINARY_RES = 0x81
} protocol_binary_magic;
- 1. Lua memcached二進制協議
- 2. php,memcached,二進制協議
- 3. 帶選項協商的TFTP協議
- 4. 協議的哈希協議
- 5. WebDav協議VS HTTP協議
- 6. 是基於現有協議的協議還是協議?
- 7. 如何正確防止memcached「協議注入」?
- 8. Swift協議專用通用協議
- 9. uwsgi協議比http協議更快嗎?
- 10. Firebase XMPP協議與HTTP協議
- 11. Swift協議和協議擴展與CollectionType
- 12. 符合其他協議綁定協議
- 13. 在UDP協議中的Tracerouting協議
- 14. 二進制協議與文本協議
- 15. 必須協議符合NSObject協議?
- 16. 協議內的Objective-C協議
- 17. 在ObjC協議上的協議擴展
- 18. Objective-C協議瘋狂 - 如何基於協議返回對象?
- 19. 如何將Clojure協議擴展到其他協議?
- 20. 如何使用UDP協議使SIP協議更可靠
- 21. 協議緩衝如何與傳統協議代碼交互
- 22. 如何確定在使用sslvSSLv23時協商哪個TLS/SSL協議?
- 23. 如何應對telnet協商
- 24. 如何實現協議
- 25. NTP協議如何工作?
- 26. 如何聲明在協議
- 27. I2C協議如何工作
- 28. 如何使用ICE協議
- 29. 如何檢查協議
- 30. 如何替換協議geoext.form.formpanel
我真的覺得這是serverfault代替計算器的問題。 –