因此,我已經收到了大約一個星期的異常,並且最終設法將它轉換爲可輕鬆讀取的代碼片段。當關閉連接時,WindowsRT StreamSocket異常
作爲背景,我正在爲Windows RT編程一個應用程序,我嘗試使用基本套接字。
爲了測試起見,我創建了一個本地套接字偵聽器來充當服務器。服務器和客戶端都需要能夠在套接字上讀/寫。
客戶端和服務器都無法(或應該)知道有多少數據會通過線路(如果有)。這是絕對的要求。服務器應該能夠按需處理任意數量的數據。
這裏是一個例子。它是作爲單元測試呈現的,因爲那是我一直遇到錯誤的地方。除去這個例子中的任何一行導致錯誤走開:
[TestMethod]
public async Task TestSomething()
{
// Setup local server
//
StreamSocketListener listener = new StreamSocketListener();
listener.ConnectionReceived += async (sender, args) =>
{
DataReader serverReader = new DataReader(args.Socket.InputStream);
await serverReader.LoadAsync(4096); // <-- Exception on this line
};
await listener.BindServiceNameAsync("10181");
// Setup client
//
using (StreamSocket socket = new StreamSocket())
{
await socket.ConnectAsync(new HostName("localhost"), "10181");
DataReader reader = new DataReader(socket.InputStream);
Task readTask = Listen(reader);
}
}
public async Task Listen(DataReader reader)
{
await reader.LoadAsync(4096);
}
的例外發生在哪裏,服務器調用LoadAsync(...)
線,並在本機測試退出拋出異常。
例外的是(貌似)簡單:
一個現有的連接被強行關閉遠程主機。 (來自HRESULT的異常:0x80072746)
任何線索將不勝感激。
嗯,我花了一段時間來確認這是答案,但它是。感謝您的答覆 :) – riwalk