我是新來的。我一直在編碼C#
,但我也需要服務器。所以我寫了一個服務器:golang net.Conn沒有可用的數據屬性
func ServeToClient(client net.Conn) {
for {
fmt.Fprintln(client,"Serving you!")
buffer:=make([]byte,1024)
_, err :=bufio.NewReader(client).Read(buffer)
if err!=nil{
fmt.Println(err)
client.Close()
fmt.Println("Disconnected duet to the error: ",err.Error())
return
}
data := string(buffer)
fmt.Println(data)
command := data[0:2]
i,err := strconv.Atoi(command)
if err!=nil {
fmt.Println(err)
return
}
}
但它看到data
爲:
{ 「ID」: 「009」, 「用戶名」: 「笨蛋」} ?????? ?????????????????????????????????????????????????? ?????????????????????????????????????????????????? ????????????????????????
我想這是由於字節數組超過(它是1024長度)。是否有任何財產(如C# Socket.Availabe
)正確創建我的字節數組?
您不應該忽略*讀取字節數,即Read方法的第一個返回值。在網絡通信中,通常您必須按塊讀取數據塊,然後組合它們以獲取整個字節流。如果您的數據採用JSON格式,請使用['json.Decoder'](https:// golang。org/pkg/encoding/json /#NewDecoder),即'decoder:= json.NewDecoder(client)',然後通過'decoder.Decode(&obj)'得到對象。 – putu
Yeap。我接到你了。 – Bungler