0

我有一个用 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,系统.Int32& 错误)[0x00000] in :0

在 System.Net.Sockets.Socket.ReceiveFrom_nochecks (System.Byte[] buf, Int32 偏移量, Int32 大小, SocketFlags 标志, System.Net.EndPoint& remote_end) [0x00000] in :0

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

谢谢

4

2 回答 2

0

try/catch不起作用的原因是错误发生在该块之外。

您正在使用Async传输,并且在关闭套接字时,您的接收委托会引发异常。

您从错误的点终止,从内部接收委托。

你所做的就像拔掉电脑而不是关闭它。

于 2013-02-24T04:32:31.323 回答
0

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

于 2013-02-24T03:16:48.550 回答