我正在客户端处理windows phone 8的winRT流套接字。我的代码是
var streamScoket = new StreamSocket();
await streamScoket.ConnectAsync(new HostName(txtServer.Text), portNumber.ToString(), SocketProtectionLevel.PlainSocket);
DataWriter dw = new DataWriter(streamScoket.OutputStream);
dw.WriteString("Hello");
await dw.StoreAsync();
DataReader reader = new DataReader(streamScoket.InputStream);
reader.InputStreamOptions = InputStreamOptions.Partial;
await reader.LoadAsync(4);
string data = string.Empty;
while (reader.UnconsumedBufferLength > 0)
{
data += reader.ReadString(reader.UnconsumedBufferLength);
}
txtConnections.Text = data;
}
在服务器端,当我传递“你好”时,我正在发送此文本的“很好,您正在接收来自服务器的消息”的响应。但是在我的“txtconnections”文本框中,只显示“Good”文本,因为我知道我已经在“LoadAsync”中传递了“4”。如果我将“4”增加到更多值,我可以显示所有内容。但是当 Tcp 对数据流进行操作时,我们如何知道响应流结束,或者如果“loadasync”中有“4”,我们将如何继续循环。有人可以帮我找到解决方案并简要解释一下..这里“UnconsumedBufferLength”包含“4”,从下一个开始它是“0”...