我想通过网络流发送字符串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