我在运行Jellybean(4.1-4.3)的设备中遇到HttpUrlConnection的一些问题,其中连接未关闭,并且执行多次后导致SocketException“打开的文件过多”。
我确实调用了HttpUrlConnection.disconnect()并在finally块中关闭了所有Inputstream,Outputstream,Reader和Writers。
转到adb shell并执行a将netstat
显示该应用程序创建的所有连接均处于CLOSE_WAIT状态。
InputStream inputStream = httpUrlConnection.getInputStream();
// After calling inputStream.read() then the problem occurs. I think the
// inputstream doesn't get closed even after calling close in a finally block.
// The InputStream is a ChunkedInputStream if that helps.
我尝试了在2.3.3、4.0.3和4.4上运行的其他设备,但没有遇到此问题。
还有另一种方法可以手动关闭连接吗?
我终于找到了解决方法。似乎软糖在“保持活动”连接上有问题。我刚刚将Connection =
Close添加到我的请求标头中,现在一切正常。在执行netstat时,我看到连接现在正在关闭,并且由于“打开的文件太多”,我不再得到SocketException。
问: 为什么我关闭了终端,Workerman就自己关闭了? 答: Workerman有两种启动模式,debug调试模式和daemon守护进程模式。 运行 php xxx.php start 是进入debug调试模式,用于开发调试问题,当终端关闭后Workerman会随之关闭。 运行 php xxx.php start -d进入的是daemon守护进程模式,终端关闭不会影响Workerman。 如果
这阻止了我在nexus设备上启动应用程序。我不知道为什么我会得到这个错误,因为我没有游标在我的代码。我正在做一个应用程序,使用谷歌地图。我不知道这是不是问题的一部分。没有错误消息,并且导入了所有正确的库。 下面是我的代码: 她是原木猫:
问: 为什么我关闭了终端,Workerman就自己关闭了? 答: Workerman有两种启动模式,debug调试模式和daemon守护进程模式。 运行 php xxx.php start 是进入debug调试模式,用于开发调试问题,当终端关闭后Workerman会随之关闭。 运行 php xxx.php start -d进入的是daemon守护进程模式,终端关闭不会影响Workerman。 如果
我有以下代码
我正在localhost上运行ASP.netJSON服务。我正在从Android应用程序向服务器发送JSON POST请求。服务器正在接收连接,但没有POST数据(我通过设置断点来确认这一点,断点在我从Android应用程序发布后命中)。我得到的HttpURLConnection响应代码是200 OK。但是,服务器没有收到数据。我不确定是否正在发送任何数据。我的android代码是(包裹在Asyn