サーバーとクライアント間の単純な 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