C# 如何使用套接字将数据从.NET服务器应用发送到Windows 8 Metro客户端应用?

C# 如何使用套接字将数据从.NET服务器应用发送到Windows 8 Metro客户端应用?,c#,sockets,stream,client-server,windows-runtime,C#,Sockets,Stream,Client Server,Windows Runtime,我正在尝试使用套接字从我的桌面应用程序发送简单的字符串消息这里是服务器端代码,它将数据发送到客户端: swSenderSender = new StreamWriter(tcpClients[i].GetStream()); swSenderSender.WriteLine(From + " says: " + Message); swSenderSender.Flush(); swSenderSender = null; 我使用DataReader使用Metr

我正在尝试使用套接字从我的桌面应用程序发送简单的字符串消息这里是服务器端代码,它将数据发送到客户端:

    swSenderSender = new StreamWriter(tcpClients[i].GetStream());
    swSenderSender.WriteLine(From + " says: " + Message);
    swSenderSender.Flush();
    swSenderSender = null;
我使用DataReader使用Metro应用程序-客户端代码

    var dr = new DataReader(socket.InputStream);
    var stringHeader = await dr.LoadAsync(4);
    int strLength = dr.ReadInt32();
    uint numStrBytes = await dr.LoadAsync((uint)strLength);
    string msg = dr.ReadString(numStrBytes);

问题就在这里。DataReader需要知道发送的字符串有多长。在另一边,StreamWriter除了简单的字符串/或带有新车道的字符串外,不能使用任何其他方式进行沙化。如何连接这两个代码?或者也许有其他方法可以做到这一点。请帮忙。我不知道如何格式化数据,以便能够在客户端和服务器之间发送数据。

在协议中解决此问题的通常方法是将消息的长度放在固定长度字段中,例如长度N。如果消息中接收的字符数永远不会超过999个,则N=3。因此,您的接收代码将转移到

receive N characters (or bytes, whatever).
decode N to get number of characters following, say M.
receive M characters.
repeat ad nauseam.

好主意!非常感谢:)