亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 net Write 發送數據\r\n 作為字符串而不是 eof 發送

使用 net Write 發送數據\r\n 作為字符串而不是 eof 發送

Go
HUH函數 2022-07-18 16:59:24
我想通過網絡使用套接字發送'info\r\n'到redis服務器,發送數據是69 6e 66 6f 5c 72 5c 6e但我想發送數據是69 6e 66 6f 0d 0a,\r\n被視為一個字符串錯誤變成 5c 72 5c 6e發送數據是代碼中的字符串我將字符串轉換為 []byte 和 conn.write這個發送似乎是錯誤的,正確的發送方法是什么?
查看完整描述

1 回答

?
30秒到達戰場

TA貢獻1828條經驗 獲得超6個贊

您的數據69 6e 66 6f 5c 72 5c 6e是:


b := []byte{0x69, 0x6e, 0x66, 0x6f, 0x5c, 0x72, 0x5c, 0x6e}

fmt.Printf("%q\n", string(b))

哪個輸出:


"info\\r\\n"

它包含一個反斜杠、一個r、另一個反斜杠和一個n字符。


你想發送一個回車\r和一個換行符\n,你不必發送這些“字面意思”。\r并且\n是單字節數據,而不是 2 字符序列。


您的數據應該是:


b = []byte{0x69, 0x6e, 0x66, 0x6f, '\r', '\n'}

fmt.Printf("%q\n", string(b))

哪個輸出:


"info\r\n"

或者簡單地說:


b = []byte("info\r\n")

fmt.Printf("%q\n", string(b))

哪個輸出相同。試試Go Playground上的示例。


知道字符串文字"info\r\n"是解釋字符串文字,\r其中的\n序列將被解釋為單個字符(回車符和換行符)。這在Spec: String literals中有詳細說明。


查看完整回答
反對 回復 2022-07-18
  • 1 回答
  • 0 關注
  • 277 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號