关闭UDP套接字时出现SocketException
本文关键字:SocketException UDP 套接字 关闭 | 更新日期: 2023-09-27 18:01:00
我有一个用C#编写的库,我在WP7/iOS/Windows应用程序中使用过它。它适用于Mono,因为我只是在使用UdpClient,而不是其他。它是一个可自动查找对等方的开源库。你可以在salaam.codeplex.com 上找到它
现在我正试图将我的应用程序移植到Android。当我找到我的同行时,我只想关闭UDP连接并转到另一个活动,但当我关闭套接字时,尽管我把它放在了一个try-catch短语中,但它抛出了一个SocketException
,然后退出。
我能做些什么来防止这种情况发生?
如果你完成了活动,它会给你一个异常,如果你调用SalaamBrowser.Close();
,它也是一样的。
异常文本:
未处理的异常:System.Net.Sockets.SocketException:已中断在System.Net.Sockets.Socket.ReceiveFrom_nochecks_exc(System.Byte[]buf,Int32偏移量,Int32大小,SocketFlags标志,System.Net.EndPoint&remote_end,布尔throwOnError,System.Int32&error([00x00000]中:0
在System.Net.Sockets.Socket.ReceiveFrom_nochecks(System.Byte[]buf,Int32偏移量,Int32大小,SocketFlags标志,System.Net.EndPoint&remote_end([0x0000]处:0
在System.Net.Socket.Socket+Worker.ReceiveFrom(([0x0000]中:0
感谢
抛出异常的是receive,而不是close。它扔它是因为你把它关上了。我不知道你还能期待什么。
您的try/catch
不工作的原因是错误发生在该块之外。
您正在使用Async
传输,在关闭套接字时,您的接收委托将抛出异常。
您从错误的点终止,请从内部接收委托。
你正在做的事情就像拔掉电脑的电源而不是关闭电脑。