Android的悲哀…为什么没有套接字例外?工作?

Android的悲哀…为什么没有套接字例外?工作?,android,sockets,Android,Sockets,我有一个套接字连接线程,它使用objectinput和output流在套接字上读写对象 在Android 2.1 update和2.2.1中,无论何时调用一个socket.shutdownOutput(),它都会在连接线程中抛出一个异常,我会捕获它并最终进行清理。出于某种有趣的原因,socket.close()在上述版本中也不会引发异常 在2.2.2中,情况并非如此。调用shutdownOutput(),shutdownInput(),close()都不会引发任何异常,我必须等到调用套接字超时后

我有一个套接字连接线程,它使用objectinput和output流在套接字上读写对象

在Android 2.1 update和2.2.1中,无论何时调用一个
socket.shutdownOutput()
,它都会在连接线程中抛出一个异常,我会捕获它并最终进行清理。出于某种有趣的原因,
socket.close()
在上述版本中也不会引发异常

在2.2.2中,情况并非如此。调用
shutdownOutput()
shutdownInput()
close()
都不会引发任何异常,我必须等到调用套接字超时后才能进行任何清理

有人能解释一下发生了什么事吗?解决办法也不错


谢谢

好的,我从上次的帖子中找到了一些关于这个问题的帖子,但是2.2.2的解决方案不适用。code.google.com/p/android/issues/detail?id=6144和code.google.com/p/android/issues/detail?id=7933

好的,我从上次的帖子中找到了一些关于这个问题的帖子,但是2.2.2的解决方案不起作用。code.google.com/p/android/issues/detail?id=6144和code.google.com/p/android/issues/detail?id=7933

你好,莫里斯,我觉得这听起来很奇怪。你能和我们分享一些代码吗?socket.close在你这边,还是在连接的另一边?如果它站在你这边,那你为什么不做清理呢?:)代码有点难写…基本上你知道什么时候你需要多线程连接套接字?当您关闭客户端连接时,您可以通过调用socket.close()来完成此操作,这样它就退出了reading while循环,您典型的in.readObject()将抛出一个异常。我显式调用socket.shutdownOutput()或socket.close()来结束线程,但在2.2.2中不起作用。通常情况下,
finally
-块用于清理。好的,我从上次就这个问题找到了一些帖子,但2.2.2中的变通方法不起作用。嗨,莫里斯,我觉得很奇怪。你能和我们分享一些代码吗?socket.close在你这边,还是在连接的另一边?如果它站在你这边,那你为什么不做清理呢?:)代码有点难写…基本上你知道什么时候你需要多线程连接套接字?当您关闭客户端连接时,您可以通过调用socket.close()来完成此操作,这样它就退出了reading while循环,您典型的in.readObject()将抛出一个异常。我显式调用socket.shutdownOutput()或socket.close()来结束线程,但在2.2.2中不起作用。通常情况下,
finally
-块用于清理。好的,我从上次就这个问题找到了一些帖子,但2.2.2中的变通方法不起作用。和