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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? modemu.c

?? 支持Telnet功能的Modem通訊程序
?? C
字號(hào):
#include <stdio.h>	/*(printf,fprintf)*/#include <ctype.h>	/*isprint*/#include <arpa/telnet.h>/*IAC,DO,DONT,...*/#include <sys/time.h>	/*fd_set,FD_ZERO*/#include <fcntl.h>	/*O_RDWR*/#include <errno.h>	/*EINTR*/#include "defs.h"	/*uchar*/#include "sock.h"	/*sock*/#include "sockbuf.h"	/*sockBufR,sockBufW*/#include "ttybuf.h"	/*tty*/#include "stty.h"	/*(setTty)*/#include "cmdlex.h"	/*Cmdstat*/#include "telopt.h"	/*telOptSummary*/#include "atcmd.h"	/*CHAR_CR*/#include "timeval.h"	/*(timeval...)*/#include "commx.h"	/*(commxForkExec)*/#include "cmdarg.h"	/*cmdarg*//* socket input processing loop */static voidsockReadLoop(void){    static enum {	SRL_NORM, SRL_IAC, SRL_CMD,	SRL_SB, SRL_SBC, SRL_SBS, SRL_SBI    } state /*= SRL_NORM*/;    static int cmd;    static int opt;    int c;    if (atcmd.pr) {	while ((c = getSock1()) >= 0) putTty1(c);    } else {	while ((c = getSock1()) >= 0) {	    switch (state) {	    case SRL_IAC:		switch (c) {		case WILL:		case WONT:		case DO:		case DONT:		    cmd = c;		    state = SRL_CMD;		    break;		case IAC:		    /*if (telOpt.binrecv)*/ {			putTty1(c);			state = SRL_NORM;		    }		    break;		case SB:		    state = SRL_SB;		    break;		default:		    state = SRL_NORM;		    telOptPrintCmd("<", c);		}		break;	    case SRL_CMD:		if (telOptHandle(cmd, c)) sock.alive = 0;		state = SRL_NORM;		break;	    case SRL_SB:		opt = c;		state = SRL_SBC;		break;	    case SRL_SBC:		state = (c == TELQUAL_SEND)? SRL_SBS : SRL_NORM;		break;	    case SRL_SBS:		state = (c == IAC)? SRL_SBI : SRL_NORM;		break;	    case SRL_SBI:		telOptSBHandle(opt);		state = SRL_NORM;		break;	    default:		if (c == IAC) {		    state = SRL_IAC;		} else {		    /*putTty1(telOpt.binrecv? c : (c & 0x7f));*/		    putTty1(c);		}	    }	}    }}/* TTY input processing loop */static struct {    enum { ESH_NORM, ESH_P1, ESH_P2, ESH_P3 } state;    struct timeval plus1T; /* the time 1st '+' input */    int checkSilence; /* Recognized silence,"+++" sequence.			 Now prepare for the 2nd silence.. */    struct timeval expireT; /* keep silence until the time */} escSeq;#define escSeqReset() { escSeq.state = ESH_NORM; }#define checkTtySilence() (escSeq.checkSilence)/* t1 - t2 > S12? */static ints12timePassed(const struct timeval *t1p, const struct timeval *t2p){    struct timeval t;    timevalSet10ms(&t, atcmd.s[12] * 2);    timevalAdd(&t, t2p);    return (timevalCmp(t1p, &t) > 0);}static voidescSeqHandle(int c){    switch (escSeq.state) {    case ESH_P1:	if (c == CHAR_ESC	    && ! s12timePassed(&ttyBufR.newT, &escSeq.plus1T)) {	    escSeq.state = ESH_P2;	} else escSeq.state = ESH_NORM;	break;    case ESH_P2:	if (c == CHAR_ESC	    && ! s12timePassed(&ttyBufR.newT, &escSeq.plus1T)) {	    escSeq.checkSilence = 1;	    timevalSet10ms(&escSeq.expireT, atcmd.s[12] * 2);	    timevalAdd(&escSeq.expireT, &ttyBufR.newT);	    escSeq.state = ESH_P3;	} else escSeq.state = ESH_NORM;	break;    case ESH_P3:	escSeq.checkSilence = 0;	escSeq.state = ESH_NORM;	/*break;*/    case ESH_NORM:	if (c == CHAR_ESC	    && s12timePassed(&ttyBufR.newT, &ttyBufR.prevT)) {	    escSeq.plus1T = ttyBufR.newT;	    escSeq.state = ESH_P1;	}    }}/*#define LINEBUF_SIZE 256 =>defs.h*/static struct {    uchar buf[LINEBUF_SIZE];    uchar *ptr;    /*int eol;*/} lineBuf;#define lineBufReset() { lineBuf.ptr = lineBuf.buf; /*lineBuf.eol = 0;*/ }#define putLine1(c) \{ \    if (lineBuf.ptr < lineBuf.buf + LINEBUF_SIZE) *lineBuf.ptr++ = (c); \}#define lineBufBS() \{ \    if (lineBuf.ptr > lineBuf.buf) lineBuf.ptr--; \}static voidttyReadLoop(void){    int c;    if (atcmd.pr) {	while ((c = getTty1()) >= 0) {	    putSock1(c);	    escSeqHandle(c);	}    } else if (telOpt.sgasend) {	while ((c = getTty1()) >= 0) {	    /*if (telOpt.binsend)*/ {		if (c == IAC) putSock1(IAC);		putSock1(c);	    } /*else putSock1(c & 0x7f);*/	    escSeqHandle(c);	}    } else {	/* !sgasend == local echo mode, which cannot be true binmode */	while ((c = getTty1()) >= 0) {	    putTty1(c);	    if (c == CHAR_CR) {		putTty1(CHAR_LF);		putSockN(lineBuf.buf, lineBuf.ptr - lineBuf.buf);		putSock1('\r'); /* EOL = CRLF */		putSock1('\n');		lineBufReset();	    } else if (c == CHAR_LF) {		/* ignore LFs. CR is the EOL char for modems */	    } else if (c == CHAR_BS) {		lineBufBS();	    } else {		/*if (telOpt.binsend)*/ {		    if (c == IAC) putLine1(IAC);		    putLine1(c);		} /*else putLine1(c & 0x7f);*/	    }	    escSeqHandle(c);	}    }}/* online mode main loop */static intonlineMode(void){    fd_set rfds,wfds;    struct timeval t;    sockBufRReset();    sockBufWReset();    ttyBufRReset();    /*ttyBufWReset();*/    lineBufReset();    escSeqReset();    if (!telOpt.sentReqs && !atcmd.pr) telOptSendReqs();    t.tv_sec = 0;    while (sockIsAlive()) {	struct timeval *tp;	FD_ZERO(&rfds);	FD_ZERO(&wfds);	if (ttyBufWReady()) FD_SET(sock.fd, &rfds); /*flow control*/	if (sockBufWHasData()) FD_SET(sock.fd, &wfds);	if (sockBufWReady()) FD_SET(tty.rfd, &rfds); /*flow control*/	if (ttyBufWHasData()) FD_SET(tty.wfd, &wfds);	if (escSeq.checkSilence) {	    struct timeval tt;	    gettimeofday(&tt, NULL);	    if (timevalCmp(&tt, &escSeq.expireT) >= 0) {		escSeq.checkSilence = 0;		return 1;	    }	    t = escSeq.expireT;	    timevalSub(&t, &tt);	    tp = &t;	} else {	    tp = NULL; /* infinite */	}	if (select(sock.fd+1, &rfds, &wfds, NULL, tp) < 0) {	    if (errno != EINTR) perror("select()");	    continue;	}	if (FD_ISSET(sock.fd, &wfds)) {	    sockBufWrite();	}	if (FD_ISSET(tty.wfd, &wfds)) {	    ttyBufWrite();	}	if (FD_ISSET(sock.fd, &rfds)) {	    sockBufRead();	    sockReadLoop();	}	if (FD_ISSET(tty.rfd, &rfds)) {	    ttyBufRead();	    ttyReadLoop();	}    }    sockShutdown();    return 0;}/* command mode input processing loop *//*#define CMDBUF_MAX 255 =>defs.h*/static struct {    uchar buf[CMDBUF_MAX+1];    uchar *ptr;    int eol;} cmdBuf;#define cmdBufReset() { cmdBuf.ptr = cmdBuf.buf; cmdBuf.eol = 0; }#define putCmd1(c) \{ \    if (cmdBuf.ptr < cmdBuf.buf + CMDBUF_MAX) *cmdBuf.ptr++ = (c); \}#define cmdBufBS() \{ \    if (cmdBuf.ptr > cmdBuf.buf) cmdBuf.ptr--; \}static voidcmdReadLoop(void){    int c;    while ((c = getTty1()) >= 0) {	putTty1(c);	if (c == CHAR_CR) {	    cmdBuf.eol = 1;	    *cmdBuf.ptr = '\0';	    return; /* may discard some chars in ttyBufR */	} else if (c == CHAR_BS) {	    cmdBufBS();#if 0	} else if (c <= ' ' || c == 127) {	    /* side effect: "a  t" is recognized as "at" */#else	} else if (c < ' ' || c == 127) {#endif	    /* just ignore them */	} else {	    putCmd1(c);	}    }}/* command mode main loop */static voidputTtyCmdstat(Cmdstat s){    static const char *cmdstatStr[] = {	"OK",	"ERROR",	"CONNECT",	"NO CARRIER",	"",	"",	"",    };    putTty1(CHAR_CR);    putTty1(CHAR_LF);    putTtyN(cmdstatStr[s], strlen(cmdstatStr[s]));    putTty1(CHAR_CR);    putTty1(CHAR_LF);}static CmdstatcmdMode(void){    fd_set rfds,wfds;    Cmdstat stat;    cmdBufReset();    ttyBufRReset();    /*ttyBufWReset();*/        for (;;) {	FD_ZERO(&rfds);	FD_ZERO(&wfds);	if (ttyBufWReady()) FD_SET(tty.rfd, &rfds); /*flow control*/	if (ttyBufWHasData()) FD_SET(tty.wfd, &wfds);	if (select(tty.wfd+1, &rfds, &wfds, NULL, NULL) < 0) {	    if (errno != EINTR) perror("select()");	    continue;	}	if (FD_ISSET(tty.wfd, &wfds)) {	    ttyBufWrite(); /* put CR before dialup */	    if (cmdBuf.eol) {		stat = cmdLex((char *)cmdBuf.buf);		cmdBufReset();		switch (stat) {		case CMDST_ATD:		case CMDST_ATO:		    return stat;		case CMDST_OK:		case CMDST_ERROR:		    putTtyCmdstat(stat);		    break;		default:; /*CMDST_NOCMD*/		}			    }	}	if (FD_ISSET(tty.rfd, &rfds)) {	    ttyBufRead();	    cmdReadLoop();	}    }}/* open a pty */static intopenPtyMaster(const char *dev){    int fd;    fd = open(dev, O_RDWR);    if (fd < 0) {	fprintf(stderr, "Pty open error.\n");	exit(1);    }    return fd;}#define PTY00 "/dev/ptyXX"#define PTY10 "pqrs"#define PTY01 "0123456789abcdef"static intgetPtyMaster(char *tty10, char *tty01){    char *p10;    char *p01;    static char dev[] = PTY00;    int fd;    for (p10 = PTY10; *p10 != '\0'; p10++) {	dev[8] = *p10;	for (p01 = PTY01; *p01 != '\0'; p01++) {	    dev[9] = *p01;	    fd = open(dev, O_RDWR);	    if (fd >= 0) {		*tty10 = *p10;		*tty01 = *p01;		return fd;	    }	}    }    fprintf(stderr,"Ran out of pty.\n");    exit(1);    return fd;}intmain(int argc, const char *argv[]){#ifdef SOCKS    SOCKSinit(argv[0]);#endif    cmdargParse(argv);    switch (cmdarg.ttymode) {	char c10, c01;    case CA_STDINOUT:	tty.rfd = 0;	tty.wfd = 1;	setTty();	break;    case CA_SHOWDEV:	tty.rfd = tty.wfd = getPtyMaster(&c10, &c01);	printf("%c%c\n", c10, c01);	break;    case CA_COMMX:	tty.rfd = tty.wfd = getPtyMaster(&c10, &c01);	commxForkExec(cmdarg.commx, c10, c01);	break;    case CA_DEVGIVEN:	tty.rfd = tty.wfd = openPtyMaster(cmdarg.dev);	break;    }    ttyBufWReset();    telOptInit();    atcmdInit(); /* initialize atcmd */ CMDMODE:    switch (cmdMode()) {    case CMDST_ATD:	if (sockIsAlive()) {	    putTtyCmdstat(CMDST_ERROR);	    goto CMDMODE;	}	goto DIAL;    case CMDST_ATO:	if (!sockIsAlive()) {	    putTtyCmdstat(CMDST_NOCARRIER);	    goto CMDMODE;	}	goto ONLINE;    default:;    }    return 1; DIAL:    telOptReset(); /* before sockDial(), which may change telOpt.xx */    switch (sockDial()) {    case 0: /* connect */	goto ONLINE;    case 1: /* error */	putTtyCmdstat(CMDST_NOCARRIER);	goto CMDMODE;    default:;    }    return 1;     ONLINE:    putTtyCmdstat(CMDST_CONNECT);    switch (onlineMode()) {    case 0: /* connection lost */	putTtyCmdstat(CMDST_NOCARRIER);	goto CMDMODE;    case 1: /* +++ */	putTtyCmdstat(CMDST_OK);	goto CMDMODE;    default:;    }	    return 1;}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一级精品大片| 午夜精品福利一区二区三区av| 欧美一级国产精品| 91麻豆精品国产无毒不卡在线观看| 日本韩国欧美一区| 91女人视频在线观看| 不卡av免费在线观看| jlzzjlzz欧美大全| 91亚洲精品乱码久久久久久蜜桃 | 狠狠狠色丁香婷婷综合久久五月| 日本欧美一区二区三区乱码| 日本va欧美va精品| 奇米色一区二区| 久久99日本精品| 韩国v欧美v亚洲v日本v| 国产精品综合av一区二区国产馆| 国产美女一区二区三区| 国产精品888| 成人精品gif动图一区| yourporn久久国产精品| 色婷婷久久久久swag精品| 欧美性色欧美a在线播放| 欧美高清视频www夜色资源网| 欧美美女网站色| 日韩三级.com| 亚洲国产成人一区二区三区| 亚洲女爱视频在线| 亚洲在线视频免费观看| 日本亚洲天堂网| 久久国产精品72免费观看| 国产美女精品人人做人人爽| 粉嫩蜜臀av国产精品网站| 91欧美一区二区| 7777女厕盗摄久久久| www成人在线观看| 日日夜夜精品视频天天综合网| 国产 日韩 欧美大片| 99久久久免费精品国产一区二区| 国产精品久久毛片a| 欧美午夜理伦三级在线观看| 欧美日韩黄视频| 国产亚洲一区二区三区四区 | 国产成人夜色高潮福利影视| 精品一区精品二区高清| 久久综合中文字幕| 日本一区二区三区在线不卡| 国产精品乱人伦一区二区| 亚洲高清免费观看| 精品一区二区三区视频在线观看| 成人理论电影网| 欧洲视频一区二区| 精品欧美一区二区久久| 亚洲精品中文字幕乱码三区| 日韩成人午夜精品| 成人av先锋影音| 在线电影欧美成精品| 国产精品少妇自拍| 丝袜亚洲精品中文字幕一区| 成人一级片网址| 91精品午夜视频| 国产精品成人免费在线| 奇米影视一区二区三区小说| 97se亚洲国产综合自在线不卡| 51精品秘密在线观看| 国产精品嫩草影院av蜜臀| 蜜臀av亚洲一区中文字幕| 99久久亚洲一区二区三区青草| 欧美一区二区黄色| 亚洲精品视频在线| 国产自产2019最新不卡| 欧美无乱码久久久免费午夜一区| 国产日韩欧美一区二区三区乱码| 亚洲成人激情社区| 国产成人综合在线观看| 7777精品伊人久久久大香线蕉的 | 欧美日韩一区三区四区| 日本一区二区三区久久久久久久久不 | 亚洲一区二区不卡免费| 高清不卡一区二区| 欧美精品粉嫩高潮一区二区| 亚洲美女淫视频| 高潮精品一区videoshd| 日韩精品一区二区三区视频播放| 亚洲综合成人在线视频| av资源站一区| 久久精品欧美日韩| 久久国产福利国产秒拍| 91麻豆精品91久久久久久清纯| 一区二区三区四区激情| 波多野结衣中文字幕一区二区三区 | 五月婷婷色综合| 日本乱码高清不卡字幕| 国产精品天美传媒沈樵| 国产一区二三区| 日韩欧美电影一二三| 午夜精品免费在线| 欧美日韩一区成人| 亚洲综合网站在线观看| 色综合久久九月婷婷色综合| 亚洲国产成人午夜在线一区| 国产69精品久久99不卡| 久久女同精品一区二区| 黄网站免费久久| 久久网这里都是精品| 久久99热狠狠色一区二区| 欧美成人三级在线| 久久成人免费网| 精品噜噜噜噜久久久久久久久试看 | 欧美成人一级视频| 精品伊人久久久久7777人| 日韩精品影音先锋| 韩国av一区二区三区在线观看| 精品久久久久香蕉网| 激情欧美日韩一区二区| 久久亚洲影视婷婷| 国产成人日日夜夜| 亚洲国产成人午夜在线一区| 波多野结衣欧美| 亚洲欧洲日产国码二区| 91天堂素人约啪| 亚洲精品免费在线观看| 91精彩视频在线观看| 亚洲一二三四在线| 欧美精品粉嫩高潮一区二区| 免费高清在线视频一区·| 日韩一区二区三区av| 久久er99热精品一区二区| 久久嫩草精品久久久精品一| 国产成人午夜精品5599| 亚洲色图视频网| 欧美美女黄视频| 久久国产精品72免费观看| 国产亚洲欧洲一区高清在线观看| 成人免费视频网站在线观看| 亚洲精品视频免费看| 欧美精品免费视频| 精品一区二区在线视频| 国产精品网曝门| 欧美综合一区二区| 免费的成人av| 国产精品短视频| 欧美色窝79yyyycom| 精品伊人久久久久7777人| 国产精品传媒在线| 欧美猛男gaygay网站| 韩日av一区二区| 亚洲天堂精品在线观看| 欧美一区二区福利视频| 国产电影精品久久禁18| 一区二区三区四区视频精品免费| 日韩欧美国产午夜精品| 成人理论电影网| 肉肉av福利一精品导航| 国产精品欧美精品| 欧美日韩aaaaaa| 国产成人综合精品三级| 亚洲国产一二三| 久久精品人人做人人爽人人| 91九色02白丝porn| 国产一区二区精品在线观看| 亚洲一区二区三区免费视频| 精品1区2区在线观看| 色婷婷亚洲精品| 国产精品一区二区在线观看不卡 | 一区二区三区欧美久久| 日韩精品一区国产麻豆| 色综合咪咪久久| 国产中文一区二区三区| 一区二区在线免费| 久久久天堂av| 欧美高清视频一二三区 | 成人久久久精品乱码一区二区三区| 亚洲va欧美va人人爽| 国产精品久久久久久久久图文区 | 国产99久久精品| 免费成人在线影院| 洋洋成人永久网站入口| 久久久久久久久久久99999| 欧美日韩久久久| 不卡的看片网站| 国产精品自拍网站| 日韩不卡在线观看日韩不卡视频| 国产精品国产三级国产aⅴ原创 | 日韩精品在线网站| 欧美视频一区二区三区| 9i看片成人免费高清| 国产一区二区三区四区五区入口 | 成人精品国产福利| 国产在线视频一区二区三区| 午夜精品一区二区三区电影天堂| 亚洲免费成人av| 国产精品福利一区二区三区| 国产色婷婷亚洲99精品小说| 欧美一级精品大片| 欧美精品粉嫩高潮一区二区| 欧美色图一区二区三区| bt欧美亚洲午夜电影天堂| 国产成人精品综合在线观看| 国产一区二区三区美女| 激情五月婷婷综合网|