我想通過網絡流發送字符串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是字節[988324]
在服務器側
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我接收到的字節是不是相同jsonbytes我發送。
我需要一些幫助。
更新!有時它工作。收到的ByData與我發送的jsonbytes相同 有些時候它不起作用:(
「它丟失了一些數據」不是對問題有幫助的描述。請詳細說明。 –
從客戶端發送jsonLength之前發送的實際數據,在服務器端建立一個緩衝區來接收json數據? – nura
@nura我認爲你一樣,但我是初學者在C#和編碼,所以你可以給我一些例子,非常感謝。 – vmphuong