Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在UdpClient中终止侦听器_C#_Asp.net_.net Core_Udp - Fatal编程技术网

C# 如何在UdpClient中终止侦听器

C# 如何在UdpClient中终止侦听器,c#,asp.net,.net-core,udp,C#,Asp.net,.net Core,Udp,我有一个UDP库,它在.NET4.x中运行良好,但我正在尝试将其移植到.NETCore,以便与ASP.NETCore MVC站点一起使用。站点通过第三方“服务器”从传感器发送和接收UDP数据报。带有“服务器”的UDP协议是固定的,因此连接的套接字不是选项 UDP侦听器将在用户登录时启动,在没有更多用户时停止。我的问题是,显然在核心中只有ReceiveAsync可用(BeginReceive/EndReceive已经消失),如何终止接收循环 就我所见,对ReceiveAsync的调用仅在收到数据报

我有一个UDP库,它在.NET4.x中运行良好,但我正在尝试将其移植到.NETCore,以便与ASP.NETCore MVC站点一起使用。站点通过第三方“服务器”从传感器发送和接收UDP数据报。带有“服务器”的UDP协议是固定的,因此连接的套接字不是选项

UDP侦听器将在用户登录时启动,在没有更多用户时停止。我的问题是,显然在核心中只有ReceiveAsync可用(BeginReceive/EndReceive已经消失),如何终止接收循环

就我所见,对ReceiveAsync的调用仅在收到数据报时返回。因此,除了站点向自身发送终止数据报之外,我看不出如何中断该过程


有什么建议吗?

也许这可以帮助您:
socket.Dispose()
,当您关闭套接字时,ReceiveAsync将执行回调,
e.ByTestTransfered
将为0,
e.SocketError
将不会
SocketError.Success
我不明白您在问什么。即使在使用
BeginReceive()
/
EndReceive()
时,也有一个“循环”。它只是没有嵌入到一个方法中。你仍然有如何中断循环的问题。然后答案仍然是您必须关闭套接字,这将导致接收操作在异常情况下完成(即,当您调用
EndReceive()
时,将引发异常)。
ReceiveAsync()
完全相同;您现在只需将所有代码放入一个方法中。什么对您不起作用?Peter,当然区别在于BeginReceive()立即返回,并且有机会在检查取消的循环或回调中调用EndReceive()。ReceiveAsync()会在收到数据报之前阻塞该执行路径,因此任何取消都必须以某种方式从单独的线程执行。