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

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

如何確定golang中連接的確切字節長度?

如何確定golang中連接的確切字節長度?

Go
夢里花落0921 2023-03-21 15:31:45
我有以下代碼:var buf []byteread_len, err := conn.Read(buf)if err != nil {    fmt.Println("Error reading:", err.Error())}buffer := make([]byte, read_len)_, err = conn.Read(buffer)if err != nil {    fmt.Println("Error reading:", err.Error())}目的是確定read_len第一個buf,然后創建第二個buffer,這是傳入 json 請求的確切長度。這只會導致錯誤JSON 輸入意外結束當我嘗試解組時var request Device_Type_Request_Structerr = json.Unmarshal(buffer, &request)我假設發生此錯誤是因為conn.Read(buffer)沒有返回任何內容,因為另一個緩沖區已經讀取了它(雖然不確定)。我應該如何確定 json 請求的長度,同時又能夠將其讀入緩沖區(長度完全相同)?
查看完整描述

1 回答

?
喵喔喔

TA貢獻1735條經驗 獲得超5個贊

Read返回讀取到緩沖區的字節數。因為傳遞給第一次調用 conn.Read 的緩沖區長度為零,所以第一次調用 conn.Read 總是返回零。

如果不讀取數據,就無法確定對等點發送了多少數據。

這個問題的簡單解決方案是使用JSON 解碼器

d := json.NewDecoder(conn)

var request Device_Type_Request_Struct

if err := d.Decode(&request); err != nil {

    // handle error

}

解碼器從流中讀取和解碼 JSON 值。


查看完整回答
反對 回復 2023-03-21
  • 1 回答
  • 0 關注
  • 109 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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