gpt4 book ai didi

c# - 如何在 UWP 应用程序中为 StreamSocket.UpgradeToSslAsync 设置超时?

转载 作者:太空宇宙 更新时间:2023-11-03 14:06:14 25 4
gpt4 key购买 nike

StreamSocket.ConnectAsync、ReadAsync 和 WriteAsync 具有接受 CancellationTokenSource 但不接受 UpgradeToSslAsync 的重载。我怎样才能克服这个?或者,它是有意制作的,超时概念对 SSL 握手没有意义(至少在 UWP 应用程序中),我应该只依赖默认行为吗?

最佳答案

StreamSocket.ConnectAsync, ReadAsync and WriteAsync have overloads accepting CancellationTokenSource

实际上,所有 ConnectAsync StreamSocket 的重载方法不接受 CancellationToken范围。此外,我没有找到 StreamSocketReadAsyncWriteAsync 方法。通常我们使用DataReaderStreamReader用于读取 StreamSocket 的输入流。

我们可以为您提到的连接创建一个CancellationToken,用于超时监控和取消连接。但是我们通过 WindowsRuntimeSystemExtensions.AsTask 来设置它方法将异步操作表示为任务,然后给出一个 CancellationToken。示例代码如下:

socket = new StreamSocket();
HostName hostName = new HostName(host);
CancellationTokenSource _cts = new CancellationTokenSource();
_cts.CancelAfter(5000);
// Connect to the server
await socket.ConnectAsync(hostName, port).AsTask(_cts.Token);
return true;

因此 UpgradeToSslAsync方法你也可以把它作为任务并给出一个 CancellationToken 如下:

await socket.UpgradeToSslAsync(SocketProtectionLevel.PlainSocket, hostName).AsTask(cancellationToken);

关于c# - 如何在 UWP 应用程序中为 StreamSocket.UpgradeToSslAsync 设置超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41139374/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com