我已經開始開發「WinRT」應用程序(Windows版「Metro」風格的應用程序)。應用程序應該通過TCP流讀取和寫入一些數據。閱讀正常,但寫作不起作用。下面你可以找到它使用.NET Framework全(工作)代碼:WinRT寫入TCP流不起作用
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版本:
如果你同步做同樣的事情會發生什麼? –
WinRT不提供同步接口 - 異步是唯一的方法;) – ollifant
你看過StreamSocket示例了嗎? –