亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? stdsoap2.c

?? linux下開發的soap協議。建議大家學習學習!
?? C
?? 第 1 頁 / 共 5 頁
字號:
/*	stdsoap2.c[pp] 2.1.6The contents of this file are subject to the gSOAP Public License Version 1.0(the "License"); you may not use this file except in compliance with theLicense. You may obtain a copy of the License athttp://www.cs.fsu.edu/~engelen/soaplicense.htmlSoftware distributed under the License is distributed on an "AS IS" basis,WITHOUT WARRANTY OF ANY KIND, either express or implied. See the Licensefor the specific language governing rights and limitations under the License.The Initial Developer of the Original Code is Robert A. van Engelen.Copyright (C) 2000-2002 Robert A. van Engelen. All Rights Reserved.Note:Win32 build needs winsock.dll (Visual C++ "wsock32.lib")To do this in Visual C++ 6.0, go to "Project", "settings", select the "Link"tab (the project file needs to be selected in the file view) and add"wsock32.lib" to the "Object/library modules" entry*/#include "stdsoap2.h"#ifdef __cplusplusextern "C" {#endif/*      EOF=-1 */#define LT (-2)	/* XML character '<' */#define TT (-3) /* XML character '</' */#define GT (-4) /* XML character '>' */#define QT (-5) /* XML character ''' */#define AP (-6) /* XML character '"' */#define blank(c) ((c)>=0 && (c)<=32)#define notblank(c) ((c)>32)#define hash_ptr(p) (((long)(p)>>3)&(SOAP_PTRHASH-1))#define soap_get1(soap) ((soap->bufidx>=soap->buflen && soap_recv(soap)) ? EOF : (unsigned char)soap->buf[soap->bufidx++])#define soap_unget(soap, c) (soap->ahead1 = c)#define soap_unget2(soap, c) (soap->ahead2 = c)static struct soap_ilist *lookup(struct soap*, const char*);static struct soap_ilist *enter(struct soap*, const char*);static void soap_update_ptrs(struct soap*, char*, char*, long);static void soap_resolve_ptr(struct soap_ilist*);static void soap_resolve_copy(struct soap*, struct soap_ilist*);static int soap_putdimefield(struct soap*, const char*, int);static char *soap_getdimefield(struct soap*, int);static int soap_position(struct soap*);static int soap_mustUnderstand(struct soap*);static int soap_puthttphdr(struct soap*, size_t);static int http_post(struct soap*, const char*, const char*, const char*, const char*, size_t);static int http_response(struct soap*, int, size_t);static int http_parse(struct soap*);static int tcp_connect(struct soap*, const char*, const char*, int);static int tcp_disconnect(struct soap*);static int fsend(struct soap*, const char*, size_t);static size_t frecv(struct soap*, char*, size_t);static int fignore(struct soap*, const char*);#ifdef _MATH_Hstruct soap_double_nan soap_double_nan = {0xFFFFFFFF, 0xFFFFFFFF};#endifstruct code_map{ int code;  const char *string;};static struct code_map h_errno_codes[] = {#ifdef HOST_NOT_FOUND       { HOST_NOT_FOUND, "Host not found" },#endif#ifdef TRY_AGAIN    { TRY_AGAIN, "Try Again" },#endif#ifdef NO_RECOVERY      { NO_RECOVERY, "No Recovery" },#endif#ifdef NO_DATA    { NO_DATA, "No Data" },#endif#ifdef NO_ADDRESS    { NO_ADDRESS, "No Address" },#endif    {0, NULL}};#ifdef WITH_OPENSSLstatic SSL_CTX *soap_ssl_ctx = NULL;static const char *soap_ssl_pw = NULL;#endif#ifdef WIN32static int tcp_done = 0;#endif/******************************************************************************/static intSOAP_FMAC2fsend(struct soap *soap, const char *s, size_t n){ int nwritten;  while (n > 0)  {#ifdef WITH_OPENSSL    if (soap->ssl)      nwritten = SSL_write(soap->ssl, s, n);    else#endif    if (soap->socket >= 0)    { if (soap->send_timeout)      { struct timeval timeout;        fd_set fd;        if (soap->send_timeout > 0)	{ timeout.tv_sec = soap->send_timeout;          timeout.tv_usec = 0;	}	else	{ timeout.tv_sec = -soap->send_timeout/1000000;          timeout.tv_usec = -soap->send_timeout%1000000;	}        FD_ZERO(&fd);        FD_SET(soap->socket, &fd);        for (;;)        { if (select(soap->socket + 1, NULL, &fd, NULL, &timeout) > 0)            break;          if (soap_errno != SOAP_EINTR)            return SOAP_EOF;        }      }      nwritten = send(soap->socket, s, n, 0);    }    else#ifdef WITH_FASTCGI    { nwritten = fwrite(s, 1, n, stdout);      fflush(stdout);    }#else#ifdef UNDER_CE      nwritten = fwrite(s, 1, n, soap->sendfd);#else      nwritten = write(soap->sendfd, s, n);#endif#endif    if (nwritten <= 0)    {#ifdef WITH_OPENSSL      if (SSL_get_error(soap->ssl, nwritten) != SSL_ERROR_NONE)        return SOAP_EOF;      else#endif      if (soap_errno == SOAP_EINTR || soap_errno == SOAP_EWOULDBLOCK || soap_errno == SOAP_EAGAIN)        nwritten = 0;  /* and call write() again */      else        return SOAP_EOF;    }    n -= nwritten;    s += nwritten;  }  return SOAP_OK;}/******************************************************************************/SOAP_FMAC1intSOAP_FMAC2soap_flush(struct soap *soap){ if (soap->bufidx == 0)    return SOAP_OK;  if (soap->chunked)  { char tmp[12];    sprintf(tmp, "%X\r\n", (unsigned int)soap->bufidx);    if ((soap->error = soap->fsend(soap, tmp, strlen(tmp))))      return soap->error;  }  if ((soap->error = soap->fsend(soap, soap->buf, soap->bufidx)))    return soap->error;  if (soap->chunked)    if ((soap->error = soap->fsend(soap, "\r\n", 2)))      return soap->error;  soap->bufidx = 0;  return SOAP_OK;}/******************************************************************************/SOAP_FMAC1intSOAP_FMAC2soap_send_raw(struct soap *soap, const char *s, size_t n){ register size_t i;  if (soap->counting)  { soap->count += n;    return SOAP_OK;  }  DBGLOG(SENT, for (i = 0; i < n; i++) fputc(s[i], fdebug));  if (soap->buffering) /* send by packets of size SOAP_BUFLEN */  { char *b;    while (n)    { i = soap->bufidx;      if (n >= SOAP_BUFLEN-i)      { n -= SOAP_BUFLEN-i;        for (b = soap->buf+i; i < SOAP_BUFLEN; i++)          *b++ = *s++;	soap->bufidx = SOAP_BUFLEN;        if (soap_flush(soap))	  return soap->error;      }      else      { soap->bufidx += n;        for (b = soap->buf+i; n; n--)          *b++ = *s++;        break;      }    }    return SOAP_OK;  }  return soap->error = soap->fsend(soap, s, n);}/******************************************************************************/SOAP_FMAC1intSOAP_FMAC2soap_send(struct soap *soap, const char *s){ return soap_send_raw(soap, s, strlen(s));}/******************************************************************************/static size_tfrecv(struct soap *soap, char *s, size_t n){ int r;#ifdef WITH_OPENSSL  if (soap->ssl)  { r = SSL_read(soap->ssl, s, n);    if (SSL_get_error(soap->ssl, r) == SSL_ERROR_NONE)      return r;    return 0;  }#endif  if (soap->socket >= 0)  { if (soap->recv_timeout)    { struct timeval timeout;      fd_set fd;      if (soap->recv_timeout > 0)      { timeout.tv_sec = soap->recv_timeout;        timeout.tv_usec = 0;      }      else      { timeout.tv_sec = -soap->recv_timeout/1000000;        timeout.tv_usec = -soap->recv_timeout%1000000;      }      FD_ZERO(&fd);      FD_SET(soap->socket, &fd);      for (;;)      { if (select(soap->socket + 1, &fd, NULL, NULL, &timeout) > 0)          break;        if (soap_errno != SOAP_EINTR)          return 0;      }    }    r = recv(soap->socket, s, n, 0);    if (r < 0)      return 0;    return r;  }#ifdef WITH_FASTCGI  return fread(s, 1, n, stdin);#else#ifdef UNDER_CE  return fread(s, 1, n, soap->recvfd);#else  return read(soap->recvfd, s, n);#endif#endif}/******************************************************************************/static intsoap_recv_raw(struct soap *soap){ size_t ret;#ifdef SOAP_DEBUG  int i;#endif  if (soap->chunked)	/* read HTTP chunked transfer */  { if (soap->chunksize > 0)    { if (soap->chunksize > SOAP_BUFLEN)        soap->buflen = ret = soap->frecv(soap, soap->buf, SOAP_BUFLEN);      else        soap->buflen = ret = soap->frecv(soap, soap->buf, soap->chunksize);      DBGLOG(TEST, SOAP_MESSAGE(fdebug,"\nGetting chunk: read %d bytes", ret));      soap->bufidx = 0;      soap->chunksize -= ret;    }    else    { char tmp[8], *t;      t = tmp;      if (!soap->chunkbuflen)      { soap->chunkbuflen = ret = soap->frecv(soap, soap->buf, SOAP_BUFLEN);        DBGLOG(TEST, SOAP_MESSAGE(fdebug,"\nRead %d bytes", ret));        soap->bufidx = 0;	if (!ret)	  return EOF;      }      soap->buflen = soap->chunkbuflen;      DBGLOG(TEST, SOAP_MESSAGE(fdebug,"\nGetting chunk size from buffered HTTP"));      while (soap->bufidx < soap->buflen && !isxdigit((int)soap->buf[soap->bufidx]))        soap->bufidx++;      while (soap->bufidx < soap->buflen && t-tmp < 7 && isxdigit((int)soap->buf[soap->bufidx]))        *t++ = soap->buf[soap->bufidx++];      while (soap->bufidx < soap->buflen && soap->buf[soap->bufidx] != '\n')        soap->bufidx++;      if (soap->bufidx >= soap->buflen || soap->buf[soap->bufidx] != '\n')      { soap->buflen = soap->chunkbuflen = ret = soap->frecv(soap, soap->buf, SOAP_BUFLEN);        DBGLOG(TEST, SOAP_MESSAGE(fdebug,"\nRead %d bytes", ret));        soap->bufidx = 0;	if (!ret)	  return EOF;        while (soap->bufidx < soap->buflen && t-tmp < 7 && isxdigit((int)soap->buf[soap->bufidx]))          *t++ = soap->buf[soap->bufidx++];        while (soap->bufidx < soap->buflen && soap->buf[soap->bufidx] != '\n')          soap->bufidx++;      }      *t = '\0';      soap->bufidx++;      soap->chunksize = strtol(tmp, &t, 16);      if (soap->chunksize <= 0)      { soap->bufidx = 0;        soap->buflen = 0;        soap->chunkbuflen = 0;	return EOF;      }      else        soap->buflen = soap->bufidx + soap->chunksize;      DBGLOG(TEST, SOAP_MESSAGE(fdebug,"\nMoving buf len to %d", soap->buflen));      if (soap->buflen > soap->chunkbuflen)      { soap->buflen = soap->chunkbuflen;	soap->chunksize -= soap->buflen - soap->bufidx;        soap->chunkbuflen = 0;        DBGLOG(TEST, SOAP_MESSAGE(fdebug,"\nPassed end of buffer for chunked HTTP"));      }      ret = soap->buflen - soap->bufidx;    }  }  else  { soap->buflen = ret = soap->frecv(soap, soap->buf, SOAP_BUFLEN);    DBGLOG(TEST, SOAP_MESSAGE(fdebug,"\nRead %d bytes", ret));    soap->bufidx = 0;  }  DBGLOG(RECV, for (i = soap->bufidx; i < soap->buflen; i++) fputc(soap->buf[i], fdebug));  soap->count += ret;  return !ret;}/******************************************************************************/SOAP_FMAC1intSOAP_FMAC2soap_recv(struct soap *soap){ if (soap->dime)  { if (soap->dime_buflen)    { char *s;      int i;      unsigned char tmp[12];      DBGLOG(TEST, SOAP_MESSAGE(fdebug,"\nDIME hdr for chunked DIME is in buffer"));      soap->count += soap->dime_buflen - soap->buflen;      soap->buflen = soap->dime_buflen;      DBGLOG(TEST, SOAP_MESSAGE(fdebug,"\nSkip padding (%u bytes)", -(int)soap->dime_size&3));      for (i = -(int)soap->dime_size&3; i > 0; i--)      { soap->bufidx++;        if (soap->bufidx >= soap->buflen)          if (soap_recv_raw(soap))	    return EOF;      }      DBGLOG(TEST, SOAP_MESSAGE(fdebug,"\nGet DIME hdr for next chunk"));      s = (char*)tmp;      for (i = 12; i > 0; i--)      { *s++ = soap->buf[soap->bufidx++];        if (soap->bufidx >= soap->buflen)          if (soap_recv_raw(soap))	    return EOF;      }      soap->dime_flags = tmp[0]&0x7;      soap->dime_size = tmp[8]<<24 | tmp[9]<<16 | tmp[10]<<8 | tmp[11];      DBGLOG(TEST, SOAP_MESSAGE(fdebug,"\nGet DIME chunk (%u bytes)", soap->dime_size));      if (soap->dime_flags&SOAP_DIME_CF)      { DBGLOG(TEST, SOAP_MESSAGE(fdebug,"\nMore chunking"));        soap->dime_chunksize = soap->dime_size;        if (soap->buflen - soap->bufidx >= soap->dime_size)        { soap->dime_buflen = soap->buflen;          soap->buflen = soap->bufidx + soap->dime_chunksize;        }        else          soap->dime_chunksize -= soap->buflen - soap->bufidx;      }      else      { DBGLOG(TEST, SOAP_MESSAGE(fdebug,"\nLast chunk"));        soap->dime_buflen = 0;        soap->dime_chunksize = 0;      }      soap->count = soap->buflen - soap->bufidx;      DBGLOG(TEST, SOAP_MESSAGE(fdebug,"\n%d bytes remaining", soap->count));      return SOAP_OK;    }    else if (soap->dime_chunksize)    { DBGLOG(TEST, SOAP_MESSAGE(fdebug,"\nGet next DIME hdr for chunked DIME (%u bytes chunk)", soap->dime_chunksize));      if (soap_recv_raw(soap))        return EOF;      if (soap->buflen - soap->bufidx >= soap->dime_chunksize)      { soap->dime_buflen = soap->buflen;        soap->count -= soap->buflen - soap->bufidx - soap->dime_chunksize;        soap->buflen = soap->bufidx + soap->dime_chunksize;      }      else        soap->dime_chunksize -= soap->buflen - soap->bufidx;      DBGLOG(TEST, SOAP_MESSAGE(fdebug,"\n%d bytes remaining, count=%d", soap->buflen-soap->bufidx, soap->count));      return SOAP_OK;    }  }  return soap_recv_raw(soap);}/******************************************************************************/SOAP_FMAC1wcharSOAP_FMAC2soap_get2(struct soap *soap){ register wchar c;  if (soap->ahead1)  { c = soap->ahead1;    soap->ahead1 = 0;    return c;  }  if (soap->ahead2)  { c = soap->ahead2;    soap->ahead2 = 0;    return c;  }  return soap_get1(soap);}/******************************************************************************/SOAP_FMAC1intSOAP_FMAC2soap_tag_cmp(const char *s, const char *t){ for (; *s; s++, t++)    if (tolower(*s) != tolower(*t))

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91蜜桃网址入口| 成人在线一区二区三区| 国产日韩欧美一区二区三区乱码 | www精品美女久久久tv| 菠萝蜜视频在线观看一区| 亚洲www啪成人一区二区麻豆| 久久久精品tv| 91精品国产91热久久久做人人 | 蜜臀av国产精品久久久久| 日韩一区在线播放| 2017欧美狠狠色| 337p亚洲精品色噜噜| 99久久精品免费| 国产精品亚洲成人| 另类综合日韩欧美亚洲| 亚洲综合网站在线观看| 中文天堂在线一区| 久久先锋影音av| 日韩一区二区三区四区五区六区| 91浏览器打开| 成人18精品视频| 国产伦精品一区二区三区视频青涩 | 成人高清视频免费观看| 国产最新精品免费| 日韩电影在线观看电影| 一区二区久久久| 亚洲欧美激情插| 中文字幕一区二区三区视频| 久久综合久久久久88| 欧美电视剧在线观看完整版| 制服丝袜成人动漫| 宅男在线国产精品| 欧美一区二区精品| 欧美一区二区精美| 欧美成人伊人久久综合网| 欧美一区二区三区男人的天堂| 欧美色男人天堂| 欧美日韩久久久一区| 中文字幕av一区二区三区高| 日韩一区二区三| 日韩欧美一二三区| 精品国产不卡一区二区三区| 日韩欧美一卡二卡| 亚洲精品一线二线三线| 精品免费一区二区三区| 日韩精品一区二| 久久久久亚洲综合| 欧美激情一区二区三区不卡 | 精品国产成人在线影院| 26uuu精品一区二区三区四区在线| 欧美成人vps| 久久久99免费| 中文字幕不卡一区| 亚洲精品高清视频在线观看| 亚洲主播在线观看| 秋霞电影网一区二区| 国产一区二区三区四区五区入口 | 欧美日韩国产精选| 日韩午夜激情av| 久久久国产精品午夜一区ai换脸| 久久久综合视频| 最新日韩在线视频| 偷拍亚洲欧洲综合| 国产在线精品一区二区三区不卡| 国产精品一二三四五| 97国产精品videossex| 欧美色老头old∨ideo| 日韩欧美综合在线| 国产精品情趣视频| 午夜精品福利一区二区蜜股av| 日本中文字幕一区二区视频| 国产美女在线精品| 91精品91久久久中77777| 欧美一区二区视频在线观看2020 | 亚洲自拍偷拍av| 久久国产人妖系列| eeuss鲁片一区二区三区在线看| 99精品欧美一区二区三区小说| 欧美在线制服丝袜| 欧美精品一区二区久久久| 综合久久久久久久| 日韩成人精品视频| av午夜一区麻豆| 日韩女优av电影在线观看| 亚洲欧洲一区二区在线播放| 日本成人在线看| 9人人澡人人爽人人精品| 91精品国产高清一区二区三区蜜臀| 久久精品人人做| 日韩在线卡一卡二| 91影视在线播放| 久久免费视频色| 亚洲自拍偷拍麻豆| 久久亚区不卡日本| 亚洲国产精品一区二区www在线| 国精产品一区一区三区mba视频| 色狠狠色噜噜噜综合网| 久久久精品蜜桃| 石原莉奈在线亚洲三区| 91在线视频观看| 国产色91在线| 免费av网站大全久久| 色视频成人在线观看免| 国产亚洲一本大道中文在线| 日韩精品一二区| 色婷婷综合久久久久中文一区二区| 欧美精品一区二| 日本少妇一区二区| 欧美三级乱人伦电影| 国产精品久久久久久久久晋中| 奇米亚洲午夜久久精品| 91国产免费看| 中文字幕一区二区三区色视频 | 色婷婷国产精品久久包臀 | 亚洲综合一二三区| 91片在线免费观看| 久久综合久久鬼色| 美女视频黄 久久| 欧美日本在线播放| 亚洲男人的天堂在线观看| 成人综合激情网| 久久男人中文字幕资源站| 久久99深爱久久99精品| 777奇米四色成人影色区| 亚洲国产视频在线| 欧洲精品一区二区三区在线观看| 中文字幕一区三区| 不卡的电影网站| 中日韩av电影| 成人av在线观| 亚洲日本在线天堂| 日本韩国欧美一区二区三区| 国产综合色精品一区二区三区| 91精品国产色综合久久| 日韩成人午夜电影| 日韩欧美中文字幕制服| 美女视频免费一区| 精品粉嫩超白一线天av| 经典三级视频一区| 久久精品人人做| 波多野结衣的一区二区三区| 中文字幕精品三区| 波波电影院一区二区三区| 亚洲欧洲成人自拍| 91精品福利视频| 香蕉久久夜色精品国产使用方法| 欧美日韩国产色站一区二区三区| 亚洲第一主播视频| 日韩欧美另类在线| 国产成人精品网址| **欧美大码日韩| 欧美无砖专区一中文字| 日韩av电影一区| 日韩美女在线视频| 国产成人午夜视频| 亚洲视频网在线直播| 日本高清不卡一区| 午夜精品久久久久久久久久久| 日韩视频在线你懂得| 国产精品一区二区男女羞羞无遮挡| 国产视频在线观看一区二区三区| 成人福利电影精品一区二区在线观看| 成人欧美一区二区三区小说| 色又黄又爽网站www久久| 香蕉av福利精品导航| 久久久久久久久久美女| 色综合网色综合| 日本不卡在线视频| 中文文精品字幕一区二区| 欧美日韩中文字幕一区| 精品一区二区影视| 亚洲色图清纯唯美| 欧美高清精品3d| 成人免费毛片嘿嘿连载视频| 亚洲最大的成人av| 久久久www免费人成精品| 91久久免费观看| 久久精品国产77777蜜臀| 国产91清纯白嫩初高中在线观看| 亚洲人成网站精品片在线观看| 51精品国自产在线| av电影一区二区| 激情五月婷婷综合网| 一区二区在线观看不卡| 日韩午夜激情电影| 91美女在线看| 国产一区二区三区av电影| 亚洲图片一区二区| 欧美激情一区三区| 91精品国产综合久久精品图片| 丁香激情综合五月| 蜜臀精品一区二区三区在线观看 | 久久 天天综合| 亚洲美女视频一区| 国产欧美精品一区二区三区四区 | 亚洲第一电影网| 国产精品色在线观看| 日韩精品最新网址| 欧美日韩1234| 91丨九色porny丨蝌蚪|