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

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

?? htftp.c

?? www工具包. 這是W3C官方支持的www支撐庫. 其中提供通用目的的客戶端的WebAPI: complete HTTP/1.1 (with caching, pipelining, PUT, POS
?? C
?? 第 1 頁 / 共 4 頁
字號:
	    break;	    	  case NEED_SELECT:	    HTTRACE(PROT_TRACE, "FTP Data.... now in state NEED_SELECT\n");	    if (FTPMode & FTP_DATA_PASV && !data->pasv)		ctrl->substate = NEED_PASV;	    else if (AcceptDataSocket(cnet, dnet, data))		ctrl->substate = NEED_PORT;	    else		ctrl->substate = SUB_ERROR;	    break;	  case NEED_PASV:	    HTTRACE(PROT_TRACE, "FTP Data.... now in state NEED_PASV\n");	    if (!ctrl->sent) {		status = SendCommand(request, ctrl, "PASV", NULL);		if (status == HT_WOULD_BLOCK)		    return HT_WOULD_BLOCK;		else if (status == HT_ERROR)		    ctrl->substate = SUB_ERROR;		ctrl->sent = YES;	    } else {		status = HTHost_read(HTNet_host(cnet), cnet);		if (status == HT_WOULD_BLOCK)		    return HT_WOULD_BLOCK;		else if (status == HT_LOADED) {		    if (ctrl->repcode == 227) {		    			/*			** If succes, we have to scan for the returned number.			** As the format for the response isn't standard,			** the best thing to do is to scan for the first digit			** after the status code, see RFC1123			*/			char *host = ctrl->reply;			int h0, h1, h2, h3, p0=0, p1=0;			while (*host && !isdigit((int) *host++));			if (!*host || sscanf(--host, "%d,%d,%d,%d,%d,%d",					     &h0,&h1,&h2,&h3,&p0,&p1) < 6) {			    HTTRACE(PROT_TRACE, "FTP Data.... PASV No addr\n");			    ctrl->substate = SUB_ERROR;			    break;			} else {			    int port = (p0<<8)+p1;			    sprintf(data->host, "ftp://%d.%d.%d.%d:%d/",				    h0, h1, h2, h3, port);			    data->pasv = YES;			    ctrl->substate = SUB_SUCCESS;			}		    } else {			ctrl->substate = AcceptDataSocket(cnet, dnet, data) ?			    NEED_PORT : SUB_ERROR;		    }		} else		    ctrl->substate = SUB_ERROR;		ctrl->sent = NO;	    }	    break;	  case NEED_PORT:	    HTTRACE(PROT_TRACE, "FTP Data.... now in state NEED_PORT\n");	    if (!ctrl->sent) {		status = SendCommand(request, ctrl, "PORT", data->host);		if (status == HT_WOULD_BLOCK)		    return HT_WOULD_BLOCK;		else if (status == HT_ERROR)		    ctrl->substate = SUB_ERROR;		ctrl->sent = YES;	    } else {		status = HTHost_read(HTNet_host(cnet), cnet);		if (status == HT_WOULD_BLOCK)		    return HT_WOULD_BLOCK;		else if (status == HT_LOADED) {		    data->pasv = NO;		    ctrl->substate = (ctrl->repcode/100 == 2) ?			SUB_SUCCESS : SUB_ERROR;		} else		    ctrl->substate = SUB_ERROR;		ctrl->sent = NO;	    }	    break;	  case SUB_ERROR:	    HTTRACE(PROT_TRACE, "FTP Data.... now in state SUB_ERROR\n");	    HTTRACE(PROT_TRACE, "FTP Data.... Can't setup data connection\n");	    ctrl->substate = 0;	    return HT_ERROR;	    break;	  case SUB_SUCCESS:	    HTTRACE(PROT_TRACE, "FTP Data.... now in state SUB_SUCCESS\n");	    HTTRACE(PROT_TRACE, "FTP Data.... Data connection negotiated\n");	    ctrl->substate = 0;	    return HT_OK;	    break;	}    }}/*	HTFTPServerInfo**	---------------**	This function finds out what server we are talking to.**	Maybe we can upgrade from NLST to LIST.**	Returns HT_OK, HT_ERROR, or HT_WOULD_BLOCK**	Thanks to James.W.Matthews@Dartmouth.EDU (James W. Matthews) for making**	his code available.*/PRIVATE int HTFTPServerInfo (HTRequest *request, HTNet *cnet,			     ftp_ctrl *ctrl, ftp_data *data){    int status;    typedef enum _state {	SUB_ERROR = -2,	SUB_SUCCESS = -1,	NEED_SYST = 0,	CHECK_SYST,	NEED_PWD,	CHECK_PWD    } state;    /* Jump into a second level state machine */    while (1) {	switch ((state) ctrl->substate) {	  case NEED_SYST:	    HTTRACE(PROT_TRACE, "FTP Server.. now in state NEED_SYST\n");	    if (!ctrl->sent) {				if (ctrl->server != FTP_UNSURE) {		    FTPListType(data, ctrl->server);		    return HT_OK;		}		status = SendCommand(request, ctrl, "SYST", NULL);		if (status == HT_WOULD_BLOCK)		    return HT_WOULD_BLOCK;		else if (status == HT_ERROR)		    ctrl->substate = SUB_ERROR;		ctrl->sent = YES;	    } else {		status = HTHost_read(HTNet_host(cnet), cnet);		if (status == HT_WOULD_BLOCK)		    return HT_WOULD_BLOCK;		else if (status == HT_LOADED) {		    ctrl->substate=ctrl->repcode==215 ? CHECK_SYST : NEED_PWD;		} else		    ctrl->substate = SUB_ERROR;		ctrl->sent = NO;	    }	    break;	  case CHECK_SYST:	    HTTRACE(PROT_TRACE, "FTP Server.. now in state CHECK_SYST\n");	    {		char *reply = ctrl->reply;		if (!*reply) {		    HTTRACE(PROT_TRACE, "FTP Server.. No server info?\n");		    ctrl->substate = NEED_PWD;		    break;		}		if (strncmp(reply, "UNIX Type: L8MAC-OSMachTen", 28) == 0) {		    ctrl->server = FTP_MACHTEN;		} else if (strstr(reply, "UNIX") != NULL) {		    ctrl->server = FTP_UNIX;		} else if (strncmp(reply, "VMS", 3) == 0) {		    ctrl->server = FTP_VMS;		} else if ((strncmp(reply, "VM/CMS", 6) == 0) ||			   (strncmp(reply, "VM", 2) == 0)) {		    ctrl->server = FTP_CMS;		} else if (strncmp(reply, "DCTS", 4) == 0) {		    ctrl->server = FTP_DCTS;		} else if (strstr(reply, "MAC-OS TCP/ConnectII") != NULL) {		    /* Check old versions of TCP/C using / in pathnames */		    ctrl->server = FTP_TCPC + FTP_UNSURE;		} else if (strncmp(reply, "MACOS Peter's Server", 20) == 0) {		    ctrl->server = FTP_PETER_LEWIS;		} else if (strncmp(reply, "Windows_NT", 10) == 0) {		    ctrl->server = FTP_WINNT;		}				/* If we are unsure, try PWD to get more information */		if (ctrl->server & FTP_UNSURE)		    ctrl->substate = NEED_PWD;		else		    ctrl->substate = SUB_SUCCESS;	    }	    break;	  case NEED_PWD:	    HTTRACE(PROT_TRACE, "FTP Server.. now in state NEED_PWD\n");	    if (!ctrl->sent) {		status = SendCommand(request, ctrl, "PWD", NULL);		if (status == HT_WOULD_BLOCK)		    return HT_WOULD_BLOCK;		else if (status == HT_ERROR)		    ctrl->substate = SUB_ERROR;		ctrl->sent = YES;	    } else {		status = HTHost_read(HTNet_host(cnet), cnet);		if (status == HT_WOULD_BLOCK)		    return HT_WOULD_BLOCK;		else if (status == HT_LOADED) {		    ctrl->substate = (ctrl->repcode/100 == 2) ?			CHECK_PWD : SUB_ERROR;		} else		    ctrl->substate = SUB_ERROR;		ctrl->sent = NO;	    }	    break;	  case CHECK_PWD:	    HTTRACE(PROT_TRACE, "FTP Server.. now in state CHECK_PWD\n");	    {		char *start = strchr(ctrl->reply, '"');		char *end;		if (!start || (end = strchr(++start, '"')) == NULL) {		    HTTRACE(PROT_TRACE, "FTP Server.. No current directory?\n");		    ctrl->server = FTP_GENERIC;		} else {		    *end = '\0';		    if (ctrl->server & FTP_TCPC) {			ctrl->server = *start == '/' ? FTP_NCSA : FTP_TCPC;		    } else if (*start == '/') {			/* path names starting with / imply Unix, right? */			ctrl->server = FTP_UNIX;		    } else if (*(end-1) == ']') {			/* path names ending with ] imply VMS, right? */			ctrl->server = FTP_VMS;		    } else			ctrl->server = FTP_GENERIC;		}		ctrl->substate = SUB_SUCCESS;	    }	    break;	  case SUB_ERROR:	    HTTRACE(PROT_TRACE, "FTP Server.. now in state SUB_ERROR\n");	    HTTRACE(PROT_TRACE, "FTP Server.. Can't get server information\n");	    ctrl->substate = 0;	    ctrl->server = FTP_GENERIC;	    return HT_ERROR;	    break;	  case SUB_SUCCESS:	    HTTRACE(PROT_TRACE, "FTP Server.. now in state SUB_SUCCESS\n");	    {	      HTHost * host = HTNet_host(cnet);	      HTTRACE(PROT_TRACE, "FTP Server.. Guessed type %d\n" _ ctrl->server);	      HTHost_setVersion(host, ctrl->server);	      FTPListType(data, ctrl->server);	      ctrl->substate = 0;	      return HT_OK;	      break;	    }	}    }}/*	HTFTPGetData**	------------**    	This function asks for the file or a directory. First we try in one go,**	but if that doesn't work, then we use CWD for each segment and then**	try to retrieve it. If that also fails, then we try if it is a**	directory.**	Returns HT_OK, HT_LOADED, HT_ERROR, or HT_WOULD_BLOCK*/PRIVATE int HTFTPGetData (HTRequest *request, HTNet *cnet, SOCKET sockfd,			  ftp_ctrl *ctrl, ftp_data *data){    int status;    char *segment = NULL;    HTNet *dnet = ctrl->dnet;    BOOL data_is_active = (sockfd == HTNet_socket(dnet));    HTPostCallback *pcbf;    typedef enum _state {	SUB_ERROR = -2,	SUB_SUCCESS = -1,	NEED_SELECT = 0,	NEED_CONNECT,	NEED_ACCEPT,	NEED_ACTION,        NEED_CWD,	NEED_SEGMENT,	NEED_STREAM,	NEED_BODY    } state;    /* Jump into a second level state machine */    while (1) {	switch ((state) ctrl->substate) {	  case NEED_SELECT:	    HTTRACE(PROT_TRACE, "FTP Get Data now in state NEED_SELECT\n");	    ctrl->substate = data->pasv ? NEED_CONNECT : NEED_ACTION;	    break;	  case NEED_CONNECT:	    HTTRACE(PROT_TRACE, "FTP Get Data now in state NEED_CONNECT\n");	    status = HTHost_connect(HTNet_host(dnet), dnet, data->host);	    if (status == HT_WOULD_BLOCK)		return HT_WOULD_BLOCK;	    else if (status == HT_OK) {		HTTRACE(PROT_TRACE, "FTP Get Data Active data socket %d\n" _ 			    HTNet_socket(dnet));		ctrl->substate = NEED_ACTION;	    } else {			 	  /* Swap to PORT on the fly */		NETCLOSE(HTNet_socket(dnet));		HTNet_setSocket(dnet, INVSOC);		HTTRACE(PROT_TRACE, "FTP Get Data Swap to PORT on the fly\n");		ctrl->substate = NEED_SELECT;		HT_FREE(segment);		return HT_OK;	    }	    break;	  case NEED_ACCEPT:	    HTTRACE(PROT_TRACE, "FTP Get Data now in state NEED_ACCEPT\n");	    status = HTHost_accept(HTNet_host(dnet), dnet, NULL);	    if (status == HT_WOULD_BLOCK)		return HT_WOULD_BLOCK;	    else if (status == HT_OK) {		HTTRACE(PROT_TRACE, "FTP Get Data Passive data socket %d\n" _			HTNet_socket(dnet));		ctrl->substate = NEED_STREAM;	    } else		ctrl->substate = SUB_ERROR;	    break;	  case NEED_ACTION:	    HTTRACE(PROT_TRACE, "FTP Get Data now in state NEED_ACTION\n");	    if (!ctrl->sent) {		char *cmd = (data->type=='L') ? "LIST" :		    (data->type=='N') ? "NLST" : "RETR";	        if (HTRequest_method(request) == METHOD_PUT) cmd = "STOR";		StrAllocCopy(segment, data->offset);		HTUnEscape(segment);		HTCleanTelnetString(segment);		status = SendCommand(request, ctrl, cmd, segment);		HT_FREE(segment);		if (status == HT_WOULD_BLOCK)		    return HT_WOULD_BLOCK;		else if (status == HT_ERROR)		    ctrl->substate = SUB_ERROR;		ctrl->sent = YES;	    } else {		status = HTHost_read(HTNet_host(cnet), cnet);		if (status == HT_WOULD_BLOCK)		    return HT_WOULD_BLOCK;		else if (status == HT_LOADED) {		    int code = ctrl->repcode;		    if (code==125 || code==150 || code==225)			ctrl->substate = data->pasv ? NEED_STREAM : NEED_ACCEPT;		    else if (code/100==5 && !ctrl->cwd)			ctrl->substate = NEED_SEGMENT;		    else {			if (ctrl->repcode == 550) {			    HTTRACE(PROT_TRACE, "FTP Get Data no such file or directory\n");			    data->stream_error = YES;			}		    	ctrl->substate = SUB_ERROR;		    }		} else		    ctrl->substate = SUB_ERROR;		ctrl->sent = NO;	    }	    break;	  case NEED_SEGMENT:	    HTTRACE(PROT_TRACE, "FTP Get Data now in state NEED_SEGMENT\n");	    {		char *ptr;		if (data->offset == data->file) {		    if (ctrl->server == FTP_VMS) {	   /* Change to root */			if ((segment = (char  *) HT_MALLOC(strlen(ctrl->uid)+3)) == NULL)			    HT_OUTOFMEM("segment ");			sprintf(segment, "[%s]", ctrl->uid);		    } else			StrAllocCopy(segment, "/");		    data->offset++;		    ctrl->substate = NEED_CWD;		} else {		    if ((ptr = strchr(data->offset, '/'))) {			*ptr='\0';			StrAllocCopy(segment, data->offset);			*ptr='/';			data->offset = ++ptr;			HTUnEscape(segment);			HTCleanTelnetString(segment);			ctrl->substate = NEED_CWD;		    } else			ctrl->substate = NEED_ACTION;		}	    }	    break;	  case NEED_CWD:	    HTTRACE(PROT_TRACE, "FTP Get Data now in state NEED_CWD\n");	    if (!ctrl->sent) {		status = SendCommand(request, ctrl, "CWD", segment);		HT_FREE(segment);		if (status == HT_WOULD_BLOCK)		    return HT_WOULD_BLOCK;		else if (status == HT_ERROR)		    ctrl->substate = SUB_ERROR;		ctrl->cwd = YES;		ctrl->sent = YES;	    } else {		status = HTHost_read(HTNet_host(cnet), cnet);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人精品免费一区二区| 国产亚洲欧美日韩在线一区| 国产美女主播视频一区| 免费看精品久久片| 天天影视色香欲综合网老头| 一区二区成人在线观看| 亚洲一级不卡视频| 亚洲国产成人av网| 性久久久久久久久| 蜜桃av一区二区三区电影| 久久精品国产99国产| 久久99精品国产麻豆婷婷| 老汉av免费一区二区三区| 国内精品久久久久影院薰衣草 | 日韩一区二区三区在线| 欧美日本韩国一区| 日韩欧美不卡一区| 久久久久久久久久久久久女国产乱| 久久久激情视频| 亚洲人成亚洲人成在线观看图片 | 欧美国产一区视频在线观看| 国产欧美日韩三级| 亚洲美女视频在线| 美女视频免费一区| 成人免费精品视频| 欧美区在线观看| 久久久国产一区二区三区四区小说 | 国产精品传媒在线| 亚洲精品视频在线看| 首页国产欧美久久| 国产高清在线精品| 欧美伊人久久久久久久久影院| 91精品国产91久久久久久最新毛片 | 欧美在线小视频| 精品免费99久久| 亚洲综合成人在线视频| 精品一区二区免费| 欧美亚洲综合网| 国产午夜精品久久久久久久 | 午夜婷婷国产麻豆精品| 久久国产欧美日韩精品| 色一情一伦一子一伦一区| 日韩欧美在线综合网| 日韩国产一二三区| 亚洲欧美韩国综合色| 老司机精品视频导航| 99久久精品国产网站| 日韩免费看的电影| 一区二区三区在线观看网站| 国产一区二区精品久久91| 在线国产电影不卡| 国产精品久久久久久久久免费樱桃| 日韩不卡在线观看日韩不卡视频| 91在线视频免费91| 久久夜色精品一区| 蜜桃av一区二区| 欧美日韩免费高清一区色橹橹| 久久精品无码一区二区三区| 视频一区视频二区中文| 欧美伊人精品成人久久综合97| 国产精品久久久久精k8| 国产九色精品成人porny | 国产精品国产三级国产普通话99 | 一区二区视频免费在线观看| 久久99国产精品尤物| 欧美男男青年gay1069videost| 国产精品不卡在线观看| 国产成人精品一区二区三区网站观看| 91精品国产日韩91久久久久久| 亚洲不卡av一区二区三区| 色综合天天天天做夜夜夜夜做| 国产三级欧美三级日产三级99| 国产精品亚洲专一区二区三区| 欧美电影免费观看完整版| 日韩一区精品视频| 欧美精品自拍偷拍| 亚洲成av人片| 91精品国产91热久久久做人人 | 免费三级欧美电影| 久久一区二区三区四区| 午夜欧美视频在线观看| 91精品欧美久久久久久动漫| 日本视频一区二区三区| 亚洲精品一区二区三区在线观看 | 欧美国产欧美亚州国产日韩mv天天看完整 | 成人不卡免费av| 欧美激情一二三区| 91蝌蚪国产九色| 亚洲在线视频免费观看| 欧美欧美欧美欧美首页| 美女视频黄a大片欧美| xf在线a精品一区二区视频网站| 国产成人在线视频免费播放| 亚洲国产高清在线观看视频| 91蜜桃免费观看视频| 视频一区视频二区在线观看| 精品国产免费人成在线观看| 国产**成人网毛片九色| 亚洲免费观看高清在线观看| 欧美片在线播放| 韩国理伦片一区二区三区在线播放| 久久午夜国产精品| 91欧美激情一区二区三区成人| 亚洲一区二区三区自拍| 日韩亚洲欧美高清| 不卡电影一区二区三区| 亚洲r级在线视频| 久久久久久久性| 欧美午夜宅男影院| 国产精品一区二区无线| 亚洲欧洲国产日韩| 日韩美女视频在线| 成人av片在线观看| 日韩激情中文字幕| 成人欧美一区二区三区在线播放| 69av一区二区三区| 波多野结衣中文字幕一区二区三区 | 在线亚洲免费视频| 精油按摩中文字幕久久| 亚洲自拍偷拍综合| 国产欧美日韩一区二区三区在线观看| 欧美亚洲愉拍一区二区| 成人午夜av电影| 日本 国产 欧美色综合| 亚洲激情自拍偷拍| 久久精品亚洲麻豆av一区二区| 欧美片网站yy| 色婷婷综合久久久久中文一区二区| 精品一区二区三区日韩| 亚洲777理论| 亚洲欧美精品午睡沙发| 国产亚洲一本大道中文在线| 欧美精品v国产精品v日韩精品| 91蜜桃视频在线| 久久91精品久久久久久秒播| 亚洲精品ww久久久久久p站| 久久久蜜桃精品| 精品欧美一区二区三区精品久久| 91丨九色丨黑人外教| 国产成人aaa| 极品美女销魂一区二区三区| 日本v片在线高清不卡在线观看| 亚洲激情自拍偷拍| 日韩理论电影院| 国产精品女同互慰在线看| 精品国产一区二区三区忘忧草| 欧美一级夜夜爽| 精品国产乱码久久久久久免费| 91精品国产91久久综合桃花| 在线不卡的av| 91麻豆精品国产91久久久使用方法| 欧美日韩日日骚| 3atv在线一区二区三区| 日韩一区和二区| 精品国产乱码久久久久久久久| 日韩欧美国产电影| 日韩免费看网站| 精品国产免费久久| 日本一区二区免费在线观看视频| 国产日韩精品视频一区| 国产女人水真多18毛片18精品视频| 久久久综合激的五月天| 日本一区二区在线不卡| 国产精品二三区| 亚洲男人的天堂在线观看| 一区二区三区视频在线观看| 亚洲综合一区二区三区| 天天影视涩香欲综合网| 久草热8精品视频在线观看| 国产一区二区成人久久免费影院| 国模大尺度一区二区三区| 粉嫩欧美一区二区三区高清影视| 91热门视频在线观看| 欧美日韩不卡一区| 欧美精品一区二区三区视频| 国产精品九色蝌蚪自拍| 日韩精品一级中文字幕精品视频免费观看 | 久久免费看少妇高潮| 国产午夜精品久久久久久免费视| 日韩一区在线免费观看| 天天射综合影视| 国产成人自拍高清视频在线免费播放| 99久久久精品| 777xxx欧美| 欧美国产视频在线| 亚洲一二三四区| 国产成人亚洲综合色影视| 色哟哟一区二区| 精品久久久久一区| 亚洲免费观看高清完整版在线观看 | 国产一区二区三区香蕉| 91美女在线观看| 亚洲精品在线三区| 亚洲自拍偷拍九九九| 国产精品综合网| 欧美日本在线播放| 国产精品国产a| 国内久久精品视频| 欧美亚一区二区| 国产精品日产欧美久久久久|