的正確答案您的具體問題是,你的連接事件處理程序應該是這個樣子:
private async void streamSocketListener_ConnectionReceived(
StreamSocketListener sender, StreamSocketListenerConnectionReceivedEventArgs args)
{
DataWriter writer = new DataWriter(args.Socket.OutputStream);
writer.WriteString(responseHtml);
await writer.StoreAsync();
await writer.FlushAsync();
}
哪裏responseHtml
是您要發送(如HTTP響應的HTML字符串,與Content-Length
填充當然)。
或者,使用System.Text.Encoding
自己手動編碼字符串,然後使用DataWriter.WriteBytes()
方法代替發送字節。
當然要注意,爲WinRT編寫HTTP服務器還有很多。實際上,您應該使用連接事件來創建一些持久客戶端數據結構,您可以在其中保留您將用於I/O的任何對象,當然還有其他任何與客戶端相關的狀態。在發送任何響應之後,您還將啓動您打算用來接收更多數據的任何機制。
不幸的是,與桌面.NET API不同,AFAIK WinRT API不提供HTTP服務器實現,例如,像System.Net.HttpListener
。但是如果你知道如何自己管理HTTP協議,那麼一旦你確定了處理I/O的其他細節,你應該沒問題。
不要忘記調用DataWriter.FlushAsyn()。 – kiewic 2014-12-08 00:58:50
謝謝,是的......我只是試圖展示基本想法,但至少有一些其他方法調用要做。我會編輯答案。 – 2014-12-08 01:27:58
@kiewic感謝彼得。我更新了我的問題,但現在瀏覽器不斷加載,並且它沒有得到字符串。我的Content-Length值錯了嗎?我的主要目標是共享文件 – user3293835 2014-12-08 01:50:15