的正确答案您的具体问题是,你的连接事件处理程序应该是这个样子:
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