在軟件數據流控制的情況下,我們使用xon和xoff(0x11和0x13)標準字符來暫停和恢復傳輸。但是如果我們想發送包含與xon和xoff的ascii值匹配的字符的二進制數據,我們應該使用什麼字符集來發送xon或xoff?如何在二進制數據的情況下發送xon/xoff?
1
A
回答
0
使用軟件握手阻止發送二進制數據。
對於做一些深奧的事情(發送9位/字節而不是8位 - 非常不標準),256個不同的二進制數據中的2個和被選擇用作XON/XOFF的2個代碼沒有區別。
有各種協議試圖解決這個問題。它們都將「二進制數據」編碼爲高效的,但不是一對一的映射。可以使用轉義碼,壓縮,數據包等。當然,通信的兩端都需要知道如何編碼/解碼。這往往限制你的選擇。如果有疑問,從二進制到文本編碼開始,因爲它更容易調試。 http://en.wikipedia.org/wiki/Binary-to-text_encoding
1
我簡單的解決方法是使用base64編碼,你有它在蟒蛇..
base64.b64encode(yourData) - encode
base64.b64decode(yourData) - decode,
它增加了額外的開銷,但發送的數據是簡單的字符格式。即使HDLC使用base64,所以這將是我想你的一個選擇。
相關問題
- 1. 發送二進制數據
- 2. 如何在不加載Cocoa的情況下訪問二進制文件數據?
- 3. 在ajax後發送二進制數據
- 4. 發送二進制數據在JSON
- 5. 在我的情況下如何從指令發送數據到父控制器?
- 6. 使用pyserial發送二進制數據
- 7. 用HttpURLConnection發送二進制數據
- 8. Python發送/ recv二進制數據
- 9. 發送二進制數據問題
- 10. 如何在不丟失數據的情況下減少整數數組的長度(二進制數據[0,1])?
- 11. Apache Solr:如何在不重新索引二進制數據內容的情況下更新元數據信息
- 12. Ajax拒絕在非常奇怪的情況下發送數據
- 13. 在沒有服務器的情況下發送數據
- 14. 如何在不使用web代碼的情況下在URL中發送數據?
- 15. 如何讀取二進制數據並作爲附件發送?
- 16. 如何從Sinatra發送二進制數據?
- 17. 如何將二進制數據從客戶端發送到webmethod?
- 18. 如何通過HTTP發送二進制文章數據?
- 19. 如何發送8位二進制數據到串口
- 20. 如何使用socket.io發送二進制數據?
- 21. 如何使用Angular js將二進制數據發送到API
- 22. 如何使用boost :: asio發送原始二進制數據
- 23. 如何以二進制幀格式發送數據(TCP)
- 24. 如何通過JQuery發送二進制數據Ajax PUT方法
- 25. 如何使用sendMessage發送二進制數據
- 26. 我如何用插座發送二進制數據
- 27. 如何通過套接字發送/接收二進制數據?
- 28. 如何在以下情況下複製數據
- 29. 如何在不重複數據的情況下進行查詢?
- 30. 如何在沒有表單的情況下向URL發送查詢數據?
您需要設計一個應用程序協議,允許您對控制字符進行編碼,而不是將其原始發送。 – Barmar
*「我們應該使用什麼字符集來發送xon或xoff」* - Termios會讓您(重新)定義軟流量控制的值,但這對傳輸二進制數據沒有幫助。要麼編碼所有的二進制數據(例如uuencode/uudecode,英特爾或摩托羅拉十六進制)或使用「轉義」字符序列(以便匹配XON&XOFF的數據可以「轉義」或編碼)。 – sawdust