- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个 WinRT 应用程序,它使用 StreamSocket
和 DataWriter
执行上传。它跟踪上传所花费的时间,然后计算吞吐量。
我遇到的问题是我获得的吞吐量远高于 Wireshark 显示的吞吐量。这是因为我的上传循环在 WinRT 框架实际将数据发送到网络层之前完成并采用了结束时间戳。我发现无法从框架接收到数据包已实际到达网络层的确认信息。 DataWriter
StoreAsync
方法只返回您存储的字节数,我在存储它们之前就知道了。
其他框架,例如 Windows Phone,有一个回调,它会在您的数据包发送后触发,并告诉您您上传了多少字节。我在 WinRT 中没有找到任何等效项,因此不得不接受一个循环来记录我在 StoreAsync
函数中提交的字节数。
有没有办法从框架中确认实际发送到网络层的字节数和时间?
更新:我尝试了@polkduran 的建议,虽然它们有助于减轻一些数据包丢失,但我在较小的文件上传 (100KB) 中仍然遇到严重的数据包丢失。对于较大的文件(4MB 和 10MB),所有数据包都已发送,但结束时间仍相差几秒钟,这会显着影响吞吐量计算(与 Wireshark 跟踪相比)。我的猜测是回调只是稍微减慢了上传速度,而不是提供实际的数据包上传确认。
我仍在寻找解决此问题的方法。
编辑:我就此问题向 Microsoft 创建了支持票。他们的官方回应是,在 WinRT 框架中没有办法确认数据包是否已实际上传。
最佳答案
我没试过,但你可以为 Completed
分配一个处理程序DataWriterStoreOperation
中的回调属性由 StoreAsync
返回DataWritter
的方法对象。
或者
可以直接使用WriteAsync
来自 OutputStream
的方法您的属性(property) StreamSocket
返回 IAsyncOperationWithProgress
操作。
关于c# - 如何使用 WinRT StreamSockets 接收数据包上传确认?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15228067/
DataReader.LoadAsync 不检测关闭的套接字(使用 InputStreamOptions::Partial) 我正在通过 TCP 连接向服务器发送数据并读取响应,但之后一切正常。但是在
我有一个 StreamSocket,我在关闭 UWP 应用程序期间将其丢弃。我的具有 Socket 连接的客户端仍然认为连接是事件的,即使应用程序已经关闭。 只有在重新启动套接字时,我的客户端才会给出
我正在开发一个 C#、UWP 10 解决方案,它使用快速、连续的读/写循环与网络设备通信。 API 提供的 StreamSocket 似乎工作得很好,直到我意识到存在内存泄漏:累积了 Task。在堆中
我正在使用 StreamSocketListener 在 Windows Phone 8(充当服务器)上接收由 HTTP POST 客户端发送的数据。我可以接收数据,但是当读取所有数据时,DataRe
所以我已经收到这个异常大约一个星期了,我终于设法将它变成一个易于阅读的代码片段。 作为背景,我正在为 Windows RT 编写一个应用程序,我正在尝试使用基本套接字。 为了测试,我创建了一个本地套接
我有一台运行 MPD(音乐播放器守护程序)的服务器,它通过套接字进行通信。现在我正在尝试在 Windows 商店应用程序中实现 MPD 协议(protocol)。基本上我发送一个命令并收到一个列表,该
我正在研究 WinRT(Windows8 Release Preview)。我有一个 Web 应用程序(实际上是一个更简单的 XMPP 客户端)。 我主要使用 StreamSocket 类来连接 Ja
我有一个 WinRT 应用程序,它使用 StreamSocket 和 DataWriter 执行上传。它跟踪上传所花费的时间,然后计算吞吐量。 我遇到的问题是我获得的吞吐量远高于 Wireshark
我正在尝试在 C# 中为 UWP 实现 XMPP 客户端,为了实现这一点,我使用 StreamSocket 进行 TCP 连接。 问题是对于握手和SASL auth,我需要服务器从客户端进行一系列“写
我正在尝试通过 StreamSocket 发送 HTTP 请求,但响应被 chop 为 “failedWinRTError:对象已关闭。” 这是我的代码: var count, hostName,
我的 Windows Phone 8 应用程序中有以下代码。 //connection code, done during app start socket = new StreamSocket();
在 Windows Phone 8.1 应用程序中,我必须按如下方式创建套接字。我如何更改它,以便它在我可以指定的时间段后超时? _socket = new StreamSocket(); await
我发布这个是因为我已经浪费了一天的时间来搜索和编程一个即使在 Metro 中也应该很容易设置的东西。 我正在寻找一个 C# StreamSocket 示例,它可以连接到套接字,从套接字读取数据(我不确
我尝试将已连接的 StreamSocket 附加到 SecureStreamSocket: class MyConnection : public TCPServerConnection { pr
我有以下 c#/WinRT 代码来接收来自 IMAP 命令的响应 DataReader reader = new DataReader(sock.InputStream); reader.InputS
使用 Windows StreamSocket 类 (TCP) 处理断开连接和重新连接事件的正确方法是什么? 我有一个问题,在断开连接事件后调用 async_connect 时调用“无效操作,在意外时
我有一个正在为 Windows 8/WinRT 编写的应用程序,它使用 StreamSocket API 与服务器建立流式连接。也就是说,服务器向客户端流式传输数据,有时带有元标记,并且可以随时断开连
我可以使用 TLS 1.2 成功连接到我们的服务器。但是我们可以选择传入 SNI(在客户端问候消息中),这会将我们重定向到防火墙后面的另一台服务器。如何在 C# StreamSocket 或 SslS
这是最小的可能场景,我能够准备: 此代码连接到 imap.gmail.com 读取初始服务器问候语(使用 Read 方法) 发送 NOOP 命令(NO 操作) 读取 NOOP 命令响应(再次使用 Re
我正在创建一个 Win 8 商店应用程序,我在其中使用 StreamSocket 连接到一个用 Java 编写的服务器。当我在调试中运行应用程序时,在 StreamSocket.ConnectAsyn
我是一名优秀的程序员,十分优秀!