私はネットワークストリーム上で文字列jsonを送信したいと思います。クライアント側のコードネットワークストリームソケットを介してbyte []データを送信します。 c#
using (var ns = new NetworkStream(socket))
{
string json = JsonConvert.SerializeObject(listCfile, Formatting.Indented);
byte[] jsonbytes = Encoding.UTF8.GetBytes(json);
byte[] jsonLength = BitConverter.GetBytes(jsonbytes.Length);
ns.Write(jsonLength, 0, jsonLength.Length);
ns.Write(jsonbytes, 0, jsonbytes.Length);
}
jsonbytesは、サーバ側
using (var ns = new NetworkStream(socket))
{
byte[] byDataLength = new byte[4];
ns.Read(byDataLength, 0, 4);
int jsonLength = BitConverter.ToInt32(byDataLength, 0);
byte[] byData = new byte[jsonLength];
ns.Read(byData, 0, jsonLength);
File.WriteAllBytes("E:\\json.txt",byData);
}
byDataはバイト[988324]
だったが、私は受け取ったbyDataは同じではありませんで、バイト[988324]
ましたjsonbytesが送った。
私はいくつかの助けが必要です。
更新!時にはそれは動作します。受信したデータはjsonbytesと同じです 何度か動作しません:(
"それはいくつかのデータを失う"問題の有用な説明ではありません。詳しく教えてください。 –
クライアント側からjsonLengthが実際のデータの前に送信され、jsonデータを受信するためにサーバー側にバッファを作成しますか? – nura
@nura私はあなたと同じだと思うが、私は初心者であるC#とコーディングするので、いくつかの例を与えることができます。ありがとうございます。 – vmphuong