zoukankan      html  css  js  c++  java
  • gsoap 超时(timeout)设置

    参考:http://www.cs.fsu.edu/~engelen/soapdoc2.html#tth_sEc19.19

    gsoap就不用介绍了,是一个c/c++编写的可用于服务端与客户端的连接工具。

    Socket connect, accept, send, and receive timeout values can be set to manage socket communication timeouts. The soap.connect_timeoutsoap.accept_timeoutsoap.send_timeout, and soap.recv_timeout attributes of the current gSOAP runtime context soap can be set to the appropriate user-defined socket send, receive, and accept timeout values. A positive value measures the timeout in seconds. A negative timeout value measures the timeout in microseconds (10−6 sec).
     
    The soap.connect_timeout specifies the timeout for soap_call_ns__method calls.
     
    The soap.accept_timeout specifies the timeout for soap_accept(&soap) calls.
     
    The soap.send_timeout and soap.recv_timeout specify the timeout for non-blocking socket I/O operations.
     
    Example: 

    struct soap soap; 
    soap_init(&soap); 
    soap.send_timeout = 10; 
    soap.recv_timeout = 10;

    This will result in a timeout if no data can be send in 10 seconds and no data is received within 10 seconds after initiating a send or receive operation over the socket. A value of zero disables timeout, for example: 

    soap.send_timeout = 0; 
    soap.recv_timeout = 0;

    When a timeout occurs in send/receive operations, a SOAP_EOF exception will be raised ("end of file or no input"). Negative timeout values measure timeouts in microseconds, for example: 

    #define uSec *-1 
    #define mSec *-1000 
    soap.accept_timeout = 10 uSec; 
    soap.send_timeout = 20 mSec; 
    soap.recv_timeout = 20 mSec;

    The macros improve readability.
     
    Caution: many Linux versions do not support non-blocking connect(). Therefore, setting soap.connect_timeout for non-blocking soap_call_ns__method calls may not work under Linux.
     
    Caution: interrupts (EINTR) can affect the blocking time in I/O operations. The maximum number of EINTR that will not trigger an error is set by SOAP_MAXEINTR in stdsoap2.h, which is 10 by default. Each EINTR may increase the blocking time by up to one second, up to SOAP_MAXEINTR seconds total.

    初始化gsoap后,然后就可以设置了。

    在struct soap里面 是有很多参数的,具体可以参见  stdsoap2.h文件。。

    只要

    soap.send_timeout = 10; 
    soap.recv_timeout = 10;

    就可以。。

    因为gsoap使用的包装http协议。然后最主要的是socket传输,对于我们熟悉的socket传输,我们在非阻塞的情况下才能设置超时。(包括 连接超时 accetp_timeout, 发送超时 send_timeout, 以及接受超时 recv_timeout)

  • 相关阅读:
    如何修改SVN中的用户名和密码
    Telerik_2012_Q3 RadGrid 汉化
    DXperience-12.1.5 官网下载+注册破解+帮助文档
    Telerik_2012_Q3 (已破解)全套下载链接
    WinForm 控件库
    向项目的文件夹中写入数据流
    coolcarousel 图片轮播缩放问题
    IOS开发UI篇--使用CAShapeLayer实现复杂的View的遮罩效果
    iOS开发
    解析 iOS 动画原理与实现
  • 原文地址:https://www.cnblogs.com/hcu5555/p/3707190.html
Copyright © 2011-2022 走看看