色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

go tcp json 解析

江奕云2年前10瀏覽0評論

Go語言中支持tcp協議的網絡編程,同時也支持處理JSON數據。本文將介紹如何使用Go語言進行TCP協議數據的解析和JSON數據的處理。

TCP協議數據解析

// 客戶端
conn, err := net.Dial("tcp", "127.0.0.1:8899")
if err != nil {
fmt.Printf("connect to server %v failed, err: %v", address, err)
}
// 讀取緩沖
buffer := make([]byte, 1024)
for {
n, err := conn.Read(buffer)
if err != nil {
fmt.Println("read from server error:", err)
return
}
fmt.Println(string(buffer[:n]))
}
// 服務端
listen, err := net.Listen("tcp", "0.0.0.0:8899")
if err != nil {
fmt.Printf("listen failed, err: %v", err)
}
// 處理連接
for {
conn, err := listen.Accept()
if err != nil {
fmt.Println("accept error:", err)
return
}
// 發送數據
_, err = conn.Write([]byte("hello world"))
if err != nil {
fmt.Println("write error:", err)
return
}
// 關閉連接
conn.Close()
}

JSON數據處理

// 解析JSON數據
type Person struct {
Name string `json:"name"` //省略omitempty表示不為空時仍然轉換成json格式
Age  int    `json:"age,omitempty"`
}
p := Person{
Name: "Tom",
Age:  18,
}
// 將結構體轉換為JSON格式
data, err := json.Marshal(p)
if err != nil {
fmt.Printf("json marshal error:%v\n", err)
return
}
fmt.Println(string(data))
// JSON格式數據轉為結構體
var p2 Person
err = json.Unmarshal(data, &p2)
if err != nil {
fmt.Printf("json unmarshal error:%v", err)
return
}
fmt.Printf("p2=%#v", p2)

以上僅為簡單示例,TCP協議和JSON數據的處理方法多種多樣,具體使用方式需要根據實際情況進行選擇。希望這篇文章能為您提供一些幫助。