[英]How to send a string using StreamSocket?
在我的Windows運行時應用程序中,我像這樣設置了一個偵聽器:
StreamSocketListener streamSocketListener = new StreamSocketListener();
streamSocketListener.ConnectionReceived += streamSocketListener_ConnectionReceived;
await streamSocketListener.BindEndpointAsync(hostName, port);
但是瀏覽器會繼續加載並最終失敗。
我測試了文件流,並返回了不可讀的字符。
如何使用StreamSocket發送字符串?
特定問題的正確答案是連接事件處理程序應如下所示:
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
是要發送的HTML字符串(例如HTTP響應,當然填充了Content-Length
)。
或者,使用System.Text.Encoding
自己手動編碼字符串,然后使用DataWriter.WriteBytes()
方法發送字節。
當然,請注意,為WinRT編寫HTTP服務器要比這多得多。 實際上,您應該使用連接事件來創建一些持久的客戶端數據結構,在該數據結構中保留將用於I / O以及任何其他與客戶端相關的狀態的對象。 發送任何響應后,您還將啟動打算用來接收更多數據的任何機制。
不幸的是,與台式機.NET API不同,AFAIK WinRT API不提供HTTP服務器實現,例如System.Net.HttpListener
。 但是,如果您知道如何自己管理HTTP協議,那么一旦確定了處理I / O的其他細節,就可以了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.