意外结束流ksoap2-android与gsoap

时间:2017-09-26 06:11:36

标签: android c++ android-ksoap2 gsoap

我们有一个Android应用程序,它使用soap与使用gsoap在C ++中实现的API进行通信。 Android应用程序使用kso​​ap2-android库进行肥皂通信。

当Android应用程序在实际设备上运行并通过wifi进行通信时,一切似乎都应该正常工作。但是,当在仿真器(虚拟化x86映像)中运行时,具有较长回复的请求通常会因ProtocolException意外的流结束而失败。

这个错误,因为它只会在长时间的响应中发生,让我相信在gsoap端,套接字很快就会关闭。我试过了一些事情。

  • gsoap端的默认accept_flags无法正常工作
  • 在gsoap中从accept_flags中显式删除了SO_LINGER标志,没有解决问题(我担心它可能会设置为延迟为零,这会导致我的问题)
  • 在接受标志中明确指定SO_LINGER标志,超时为10,未解决问题
  • 然后我尝试在关闭之前在gsoaps tcp_disconnect函数中添加1秒的睡眠。这解决了问题,但睡觉并不好。

由于睡眠不是一个好的解决方案,我最终使用选择似乎工作正常但我对这个解决方案没有100%的信心。

这是实际的代码更改。这些是stdsoap2.cpp中tcp_disconnect函数的最后几行。 tcp_select调用是我添加的。

setInterval()

这是正确的解决方案吗?

0 个答案:

没有答案