首页 > 解决方案 > 如何使用 C# 在 UWP 中读取传入的网络套接字以完成?

问题描述

我相信我遇到了 .NET 的解决方案,但它不适用,我也不打算在 UWP 下对其进行测试;请记住,我要求的是 UWP 解决方案。

private async void start()
{
    ... other stuff ...
    listener.ConnectionReceived += conn_received;
    ... other stuff ...
}

private async void conn_received(StreamSocketListener sender, StreamSocketListenerConnectionReceivedEventArgs args)
{
    Stream inStream = args.Socket.InputStream.AsStreamForRead();
    StreamReader reader = new StreamReader(inStream);
    string request = reader.ReadLine();
    ... other stuff ...
}

我写套接字响应没有问题,但问题是完全读取传入的数据,因为 MSDN 没有读取任意数量的未格式化数据的完整示例。

我的 UWP 应用程序是一个非常简单的 REST 服务器,它需要读取 POST 数据,但不能保证长度是标头的一部分,我也不能正确解析它。

我可以通过 read(size) 来读取整个数据包,其中 size 是一个很大的数字,我不知道这本身是否是一个可接受的解决方案,尽管这样做的直接问题是性能损失。所以这不是一个真正可用的解决方案。

当我尝试 .ReadTimeout 或 .Length 时,它们抛出异常且不可用,因此我不确定如何完整读取传入的网络数据。尽管我无法阅读,但 Read* 方法本身是盲读并在最后阻塞。

标签: c#socketsnetworkinguwp

解决方案


推荐阅读