私は新しいです。私は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()によると
バイト読み込み*の数、つまり 'Read'メソッドの最初の戻り値を無視してはいけません。ネットワーク通信では、通常、チャンクでデータチャンクを読み取ってから、それらを結合してバイトストリーム全体を取得する必要があります。データがJSON形式の場合は、['json.Decoder'](https:// golang。org/pkg/encoding/json /#NewDecoder)、すなわち 'decoder:= json.NewDecoder(client)'を実行し、 'decoder.Decode(&obj)'でオブジェクトを取得します。 – putu
Yeap。見つけた。 – Bungler