内容简介:Several threads fromWe have a simple client server architecture between our mobile device and our server both written in Java. An extremely simple ServerSocket and Socket implementation. However one problem is that when the client terminates abruptly (with
Several threads from STACK OVERFLOW :
We have a simple client server architecture between our mobile device and our server both written in Java. An extremely simple ServerSocket and Socket implementation. However one problem is that when the client terminates abruptly (without closing the socket properly) the server does not know that it is disconnected. Furthermore, the server can continue to write to this socket without getting any exceptions. Why?
Another,
If I put a nonsense url no exception is thrown and none of the rest of my code is executed not even the rest of the asynctask that called the method that connects.
Typically:
try { socket.connect(new InetSocketAddress(address, port), 2000); } catch (Exception e) { //will never reach this block }
I am facing the same problem. I have tried every means below these questions, but it still did not work. I found that some apps downloaded from Google Play has the same problem that it could connect and send data to a invalid address.
There is no doubt that there is a bug of Android SDK, could found in this thread: no IOException on socket read/write after remote close as well.
My solution is to switch the minSdkVersion
to a newer version such as 21 and to use the latest build tools.
Android 开发过程中,遇到一个比较诡异的问题:Socket.connect 即使连接失败也不会抛出任何异常,这个问题在 STACK OVERFLOW 上已经有非常多的讨论,但我翻了无数答案没有找到合适的解决方法。最后可以确认这是Android历史遗留的一个臭虫,至于在哪个版本SDK中被修复了还不得而知,我最后将 minSdkVersion
从15换到21解决了这个问题,代价就是APP只能在 Android 5.0 以后的版本上运行。
强迫症这个病,得治。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。