我正在尝试实现服务器和客户端之间的简单 StreamSocket 通信。服务器用 Java 编写,客户端用 C# 编写。
从客户端向服务器发送消息(字符串)可以正常工作。但反过来,我遇到了一些麻烦。
当我从服务器向客户端发送一个字符串时,我希望每条消息都从客户端打印出来。
我在客户端初始化我的 StreamSocket,如下所示:
public async void startConn()
{
StreamSocket streamSocket = new StreamSocket();
try
{
await streamSocket.ConnectAsync(new Windows.Networking.HostName(server), port.ToString());
DataReader reader = new DataReader(streamSocket.InputStream);
reader.InputStreamOptions = InputStreamOptions.Partial;
reader.UnicodeEncoding = Windows.Storage.Streams.UnicodeEncoding.Utf8;
var count = await reader.LoadAsync(256);
while (true)
{
string text = reader.ReadString(count);
Debug.WriteLine("Message: " + text);
count = await reader.LoadAsync(256);
}
}catch (Exception e)
{
//TODO
}
}
我想要,客户端打印出服务器上的每个字符串,即使消息有多长。但是,如果我从服务器向客户端发送消息,尽管我将 StreamSocket 的选项设置为Partial
.
例如:
Server send: Hello Client: print out nothing
Server send: Today Client: print out "Hello"
Server send: Hi Client: print out nothing
Server send: Bye Client: print out "Hi"
我尝试了不同版本的LoadAsync()
其他尺寸(不是 256)和UnconsumedBufferLength
. 但每次我都有相同的结果。谁能告诉我,怎么了?
最好的问候 DJTrust