用于关闭UDP套接字的SocketException

时间:2013-02-23 21:20:22

标签: c# .net sockets xamarin.android

我有一个用C#编写的库,我在WP7 / iOS / Windows Apps中使用过它。它适用于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 offset,Int32 size,SocketFlags flags,System.Net.EndPoint& remote_end,Boolean throwOnError,System.Int32& error)[0x00000] in:0

在System.Net.Sockets.Socket.ReceiveFrom_nochecks(System.Byte [] buf,Int32 offset,Int32 size,SocketFlags flags,System.Net.EndPoint& remote_end)[0x00000] in:0

在System.Net.Sockets.Socket + Worker.ReceiveFrom()[0x00000] in:0

由于

2 个答案:

答案 0 :(得分:0)

抛出异常的接收,而不是关闭。因为你关闭了它所以扔它。我不知道你还能期待什么。

答案 1 :(得分:0)

try/catch无效的原因是错误发生在该区块之外。

您正在使用Async转移,关闭套接字时,您的接收代理会抛出异常。

你是从错误的点终止,从接收委托内部做。

您正在做的就是插上电脑而不是关机。