如何在UWP C中的TCP连接中的报头中添加消息长度C#
问题描述:
我必须向具有消息长度的服务器发送json消息,并且该长度将被添加到报头中。 像:{48} jsondata如何在UWP C中的TCP连接中的报头中添加消息长度C#
public async void SendMessageToServer(string message)
{
try
{
ing len= message.Length;
using (writer = new DataWriter(socket.OutputStream))
{
writer.WriteString(message);
await writer.StoreAsync();
await writer.FlushAsync();
writer.DetachStream();
ReadResponse();
}
}
catch (Exception ex)
{
throw ex;
}
}
答
如果你想它,你只写它,你正在写的实际消息的消息之前的文字:
int len = message.Length;
using (writer = new DataWriter(socket.OutputStream))
{
writer.WriteString(len.ToString());
writer.WriteString(message);
...
然而,这感觉,因为有点怪服务器将不得不查找数字,直到遇到非数字,然后阅读它们。你确定这是它的工作原理吗?通常的长度被作为一个二进制,其例如作为32位的长度将是:
int len = message.Length;
using (writer = new DataWriter(socket.OutputStream))
{
writer.WriteInt32(len);
writer.WriteString(message);
...
答
我去溶液长度将被添加作为消息和服务器头总是读该消息长度前5个字节。
using (DataWriter writer = new DataWriter(socket.OutputStream))
{
string len = String.Format("{0:D4}", message.Length);
writer.WriteString(len + "" + message);
await writer.StoreAsync();
await writer.FlushAsync();
writer.DetachStream();
}