簡體   English   中英

如何使用StreamSocket發送字符串?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM