「WinRT」アプリ (Windows 8 用の「Metro」スタイルのアプリ) の開発から始めました。アプリは、TCP ストリームを介して一部のデータを読み書きする必要があります。読み取りは正常に機能しますが、書き込みは機能しません。以下に、完全な .NET Framework を使用するコードを示します (動作します)。
var client = new TcpClient();
client.Connect(IPAddress.Parse("192.168.178.51"), 60128);
var stream = client.GetStream();
var writer = new StreamWriter(stream);
writer.WriteLine("ISCP\0\0\0\x10\0\0\0.....");
writer.Flush();
比較すると、次のコードは機能しません。
var tcpClient = new StreamSocket();
await tcpClient.ConnectAsync(new HostName("192.168.178.51"), "60128");
var writer = new DataWriter(_tcpClient.OutputStream);
writer.WriteString("ISCP\0\0\0\x10\0\0\0....");
writer.FlushAsync();
WriteString は文字列の正しい長さ (25) を返しますが、相手側は正しいコマンドを受け取りません。Wireshark 経由で、完全な .NET バージョンの正しいパッケージも表示されますが、WinRT バージョンのパッケージは表示されません。
これを修正する方法は?
.NET バージョン:
WinRT バージョン: