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

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

Golang服務器,如何接收TCP JSON數據包?

Golang服務器,如何接收TCP JSON數據包?

Go
精慕HU 2021-10-04 17:21:39
我是 Golang 的新手,在這里使用“服務器”代碼作為起點:http : //www.golang-book.com/13/index.htm#section7我嘗試使用 JSON 而不是 Gob 解碼(因為我需要用 C# 編寫客戶端),并且我將 JSON TCP 數據客戶端數據與下面的代碼分開發送。我被困在我實際接收 JSON TCP 數據并將其存儲在變量中以便對其進行解碼的部分??雌饋砦铱梢杂?解碼它json.Unmarshal,但我找不到任何json.Unmarshal用于解碼 TCP 數據的示例。我只能找到json.Unmarshal用于解碼 JSON 字符串的示例。我的代碼如下:package mainimport (  "encoding/json"  "fmt"  "net")type coordinate struct {  X float64 `json:"x"`  Y float64 `json:"y"`  Z float64 `json:"z"`}func server() {  // listen on a port  ln, err := net.Listen("tcp", ":9999")  if err != nil {    fmt.Println(err)    return  }  for {    // accept a connection    c, err := ln.Accept()    if err != nil {      fmt.Println(err)      continue    }    // handle the connection    go handleServerConnection(c)  }}func handleServerConnection(c net.Conn) {  // receive the message  var msg coordinate卡在下面的線上。我可以將 rawJSON 變量設置為等于什么?  err := json.Unmarshal([]byte(rawJSON), &msg)  if err != nil {    fmt.Println(err)  } else {    fmt.Println("Received", msg)  }  c.Close()}func main() {  go server()  //let the server goroutine run forever  var input string  fmt.Scanln(&input)}
查看完整描述

1 回答

?
收到一只叮咚

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

您可以json.Decoder直接修補連接:


func handleServerConnection(c net.Conn) {


    // we create a decoder that reads directly from the socket

    d := json.NewDecoder(c)


    var msg coordinate


    err := d.Decode(&msg)

    fmt.Println(msg, err)


    c.Close()


}


查看完整回答
反對 回復 2021-10-04
  • 1 回答
  • 0 關注
  • 344 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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