Gsoap error 28 : SOAP_TCP_ERROR
Gsoap error 28 : SOAP_TCP_ERROR
我在Qt应用程序中为Symbian S60第三版FP2使用gsoap。我每5秒钟向WS发出几个请求。2小时后,应用程序无法连接到WS,我从gsoap得到了错误28:SOAP_TCP_Error。如果我停止应用程序并再次启动它,它就能够再次连接到WS。为什么会发生这种情况?
我已经将gsoap WS调用放入for循环中,每次运行它时,它都会在第892次停止连接到WS
作为前期工作,您可以做以下几件事:
- 在gsoap启用DBGLOG
- 在客户端使用soap_faildetail
我99%确信它会给你一个tcp连接超时错误,这意味着连接握手刚刚失败。如果是这样,则意味着WS由于某种原因没有接受该连接。问题的根源可能介于proxy/firewall/os/buggy-ws/driver之间,仅举几个例子。因此,可以使用重新连接尝试。我不熟悉symbian,但在windows操作系统中,重新连接是在幕后进行的:
- 请参阅:https://technet.microsoft.com/en-us/library/cc938209.aspx
默认情况下,会尝试两次重新连接,但此行为可以通过注册表参数、驱动程序或winsock进行更改。
我认为您必须在应用程序级别编写显式连接重试子例程,并强制gSOAP使用它(请参阅gSOAP文档中的hooks部分),或者如果它返回错误,只需调用soap_connect几次。
注意:在gsoap级别引入connection_timeout可能会引起混淆。如果您决定将这个(如果您还没有)放在代码中,请执行一些测试,无论重新连接尝试是否真的在该超时内完成。我想说的是,您的应用程序可以将超时设置为30分钟,但您的操作系统会在最初几秒钟内将SYN数据包放入WS主机几次。如果WS主机由于某种原因不响应SYN-ACK,那么gsoap的tcp_connect子例程将陷入30分钟的时间浪费循环。
- "error: no matching function for call to"构造函数错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 通过套接字[TCP]传输数据 如何在C / C ++中打包多个整数并使用send() recv()传输数据
- 使用 LuaBridge 将 LuaJIT 绑定到C++会导致"PANIC: unprotected error"
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- 是否可以用"iostream"包装现有的TCP/OOpenSSL会话
- OpenMP卸载说'fatal error: could not find accel/nvptx-none/mkoffload'
- C++错误:"error: int aaa::bbb is protected within this context"
- 尝试链接我的着色器时,我收到错误代码"error c5145 must write to gl_position"
- C++,在int数组中输入字符串或字符会输出0,而不是ascii或error
- 我可以与 python 服务器而不是 c++ 客户端建立 tcp/ip 套接字吗?
- 使用 cmake 的 LLVM 构建在 tsan_libdispatch_mac.cc 期间失败; "Error: conflicting types for ..."
- C++ "error: invalid use of void expression"
- struct.error:解压缩 C++ 结构时,解包需要 288 字节的缓冲区
- 如何修复"error: ‘_1’ was not declared in this scope"?
- 提升 Asio TCP 服务器 处理多个客户端
- 通过TCP的PvP通信问题
- 从不同目录执行时"symbol lookup error:",否则从构建目录执行时按预期工作
- C++ boost::asio::ip::tcp::acceptor 有时不接受连接器?
- Boost asio TCP IP asio class compile error with Visual Studio.错误:C2228:'.close'左侧必须具有类/结构/联合