[英]C#: Trouble with socket ReceiveAsync and SendAsync on Remote Host
[英]C# UWP Socket: using ReceiveAsync / SendAsync and handling a timeout without closing the socket
我正在UWP平台上编写类库,该类库将用于移动UWP应用程序。
该库需要通过基于TCP的专有协议与外部设备进行通讯。 该协议要求接收或发送操作要等待确切的时间。
实际上,我已经使用ReceiveAsync和SendAsync实现了通信层,并为它们“等待” TPL模式指示。
在对参数进行大量阅读之后,我发现无法自然地设置读/写操作的超时时间。 可以使用一些技巧来实现超时过程(例如:.WaitAny或超时令牌),但是我的所有阅读使我明白了这一事实:
仅关闭套接字,才能中断ReceiveAsync或SendAsync任务
我的问题是:这是真的吗? 只能关闭/处置套接字才能阻止超时的接收/发送吗?
如果是这样,则由于我正在实施的协议不允许我数百次打开/关闭套接字,因此我需要恢复到实际处理正常超时的命令的同步接收/发送版本 。
我已经阅读了很多有关参数的文章,并且对所写的内容很确定,但是老实说,我希望有一种方法可以使用TPL模式处理超时,而无需关闭套接字...
谢谢。
我的问题是:这是真的吗? 只能关闭/处置套接字才能阻止超时的接收/发送吗?
对,那是正确的。 超时不适用于异步套接字方法。 取消现有异步读/写的正确方法是关闭套接字。
如果是这样,则由于我正在实施的协议不允许我数百次打开/关闭套接字,因此我需要恢复到实际处理正常超时的命令的同步接收/发送版本。
我不同意。 协议定义中的超时仅是建议性的; 它们无法执行。 或者换种说法,它不必是字面上的接收或发送超时; 它可以是逻辑上的 “接收”或“发送”超时。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.