c# - 如何使用 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* 方法本身是盲读并在最后阻塞。
解决方案
推荐阅读
- ruby-on-rails - 为什么我在 Heroku 中收到 ActionView::Template::Error (Nil location provided. Can't build URI) 错误,但在开发中却没有?
- python - 迭代总和为单位的比率
- r - 如何从一个基于 NA 的两个数据帧中删除具有 NA 的行?
- reactjs - 通过 React 组件修改代码输出
- java - 我无法在控制台上打印包含 (0x0D) 的字符串
- c# - 获取当前文件的路径
- react-native - 在本机反应中停止动画计时
- java - 使用 H2 数据库对 DAO 层进行单元测试
- java - 使用 springfox-swagger2 版本 3.0.0-SNAPSHOT 观察错误“无法推断基本 url”
- excel - 计算加班时间不一致的公式