⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 utilities.cc

📁 这是关于远程登陆TELNET 的源代码 已经测试过的。
💻 CC
📖 第 1 页 / 共 2 页
字号:
	    case 1:		fprintf(NetTrace, " ON"); break;	    default:		fprintf(NetTrace, " %d (unknown)", pointer[1]);	    }	    for (i = 2; i < length; i++)		fprintf(NetTrace, " ?%d?", pointer[i]);	    break;	case TELOPT_NAWS:	    fprintf(NetTrace, "NAWS");	    if (length < 2) {		fprintf(NetTrace, " (empty suboption???)");		break;	    }	    if (length == 2) {		fprintf(NetTrace, " ?%d?", pointer[1]);		break;	    }	    fprintf(NetTrace, " %d %d (%d)",		pointer[1], pointer[2],		(int)((((unsigned int)pointer[1])<<8)|((unsigned int)pointer[2])));	    if (length == 4) {		fprintf(NetTrace, " ?%d?", pointer[3]);		break;	    }	    fprintf(NetTrace, " %d %d (%d)",		pointer[3], pointer[4],		(int)((((unsigned int)pointer[3])<<8)|((unsigned int)pointer[4])));	    for (i = 5; i < length; i++)		fprintf(NetTrace, " ?%d?", pointer[i]);	    break;	case TELOPT_LINEMODE:	    fprintf(NetTrace, "LINEMODE ");	    if (length < 2) {		fprintf(NetTrace, " (empty suboption???)");		break;	    }	    switch ((unsigned char)(pointer[1])) {	    case WILL:		fprintf(NetTrace, "WILL ");		goto common;	    case WONT:		fprintf(NetTrace, "WONT ");		goto common;	    case DO:		fprintf(NetTrace, "DO ");		goto common;	    case DONT:		fprintf(NetTrace, "DONT ");	    common:		if (length < 3) {		    fprintf(NetTrace, "(no option???)");		    break;		}		switch ((unsigned char)(pointer[2])) {		case LM_FORWARDMASK:		    fprintf(NetTrace, "Forward Mask");		    for (i = 3; i < length; i++)			fprintf(NetTrace, " %x", pointer[i]);		    break;		default:		    fprintf(NetTrace, "%d (unknown)", pointer[2]);		    for (i = 3; i < length; i++)			fprintf(NetTrace, " %d", pointer[i]);		    break;		}		break;			    case LM_SLC:		fprintf(NetTrace, "SLC");		for (i = 2; i < length - 2; i += 3) {		    if (SLC_NAME_OK(pointer[i+SLC_FUNC]))			fprintf(NetTrace, " %s", SLC_NAME(pointer[i+SLC_FUNC]));		    else			fprintf(NetTrace, " %d", pointer[i+SLC_FUNC]);		    switch (pointer[i+SLC_FLAGS]&SLC_LEVELBITS) {		    case SLC_NOSUPPORT:			fprintf(NetTrace, " NOSUPPORT"); break;		    case SLC_CANTCHANGE:			fprintf(NetTrace, " CANTCHANGE"); break;		    case SLC_VARIABLE:			fprintf(NetTrace, " VARIABLE"); break;		    case SLC_DEFAULT:			fprintf(NetTrace, " DEFAULT"); break;		    }		    fprintf(NetTrace, "%s%s%s",			pointer[i+SLC_FLAGS]&SLC_ACK ? "|ACK" : "",			pointer[i+SLC_FLAGS]&SLC_FLUSHIN ? "|FLUSHIN" : "",			pointer[i+SLC_FLAGS]&SLC_FLUSHOUT ? "|FLUSHOUT" : "");		    if (pointer[i+SLC_FLAGS]& ~(SLC_ACK|SLC_FLUSHIN|						SLC_FLUSHOUT| SLC_LEVELBITS))			fprintf(NetTrace, "(0x%x)", pointer[i+SLC_FLAGS]);		    fprintf(NetTrace, " %d;", pointer[i+SLC_VALUE]);		    if ((pointer[i+SLC_VALUE] == IAC) &&			(pointer[i+SLC_VALUE+1] == IAC))				i++;		}		for (; i < length; i++)		    fprintf(NetTrace, " ?%d?", pointer[i]);		break;	    case LM_MODE:		fprintf(NetTrace, "MODE ");		if (length < 3) {		    fprintf(NetTrace, "(no mode???)");		    break;		}		{		    char tbuf[64];		    snprintf(tbuf, sizeof(tbuf), "%s%s%s%s%s",			pointer[2]&MODE_EDIT ? "|EDIT" : "",			pointer[2]&MODE_TRAPSIG ? "|TRAPSIG" : "",			pointer[2]&MODE_SOFT_TAB ? "|SOFT_TAB" : "",			pointer[2]&MODE_LIT_ECHO ? "|LIT_ECHO" : "",			pointer[2]&MODE_ACK ? "|ACK" : "");		    fprintf(NetTrace, "%s", tbuf[1] ? &tbuf[1] : "0");		}		if (pointer[2]&~(MODE_MASK))		    fprintf(NetTrace, " (0x%x)", pointer[2]);		for (i = 3; i < length; i++)		    fprintf(NetTrace, " ?0x%x?", pointer[i]);		break;	    default:		fprintf(NetTrace, "%d (unknown)", pointer[1]);		for (i = 2; i < length; i++)		    fprintf(NetTrace, " %d", pointer[i]);	    }	    break;	case TELOPT_STATUS: {	    const char *cp;	    int j, k;	    fprintf(NetTrace, "STATUS");	    switch (pointer[1]) {	    default:		if (pointer[1] == TELQUAL_SEND)		    fprintf(NetTrace, " SEND");		else		    fprintf(NetTrace, " %d (unknown)", pointer[1]);		for (i = 2; i < length; i++)		    fprintf(NetTrace, " ?%d?", pointer[i]);		break;	    case TELQUAL_IS:		if (--want_status_response < 0)		    want_status_response = 0;		if (NetTrace == stdout)		    fprintf(NetTrace, " IS\r\n");		else		    fprintf(NetTrace, " IS\n");		for (i = 2; i < length; i++) {		    switch((unsigned char)(pointer[i])) {		    case DO:	cp = "DO"; goto common2;		    case DONT:	cp = "DONT"; goto common2;		    case WILL:	cp = "WILL"; goto common2;		    case WONT:	cp = "WONT"; goto common2;		    common2:			i++;			if (TELOPT_OK((int)pointer[i]))			    fprintf(NetTrace, " %s %s", cp, TELOPT(pointer[i]));			else			    fprintf(NetTrace, " %s %d", cp, pointer[i]);			if (NetTrace == stdout)			    fprintf(NetTrace, "\r\n");			else			    fprintf(NetTrace, "\n");			break;		    case SB:			fprintf(NetTrace, " SB ");			i++;			j = k = i;			while (j < length) {			    if (pointer[j] == SE) {				if (j+1 == length)				    break;				if (pointer[j+1] == SE)				    j++;				else				    break;			    }			    pointer[k++] = pointer[j++];			}			printsub(0, &pointer[i], k - i);			if (i < length) {			    fprintf(NetTrace, " SE");			    i = j;			} else			    i = j - 1;			if (NetTrace == stdout)			    fprintf(NetTrace, "\r\n");			else			    fprintf(NetTrace, "\n");			break;						    default:			fprintf(NetTrace, " %d", pointer[i]);			break;		    }		}		break;	    }	    break;	  }	case TELOPT_XDISPLOC:	    fprintf(NetTrace, "X-DISPLAY-LOCATION ");	    switch (pointer[1]) {	    case TELQUAL_IS:		fprintf(NetTrace, "IS \"%.*s\"", length-2, (char *)pointer+2);		break;	    case TELQUAL_SEND:		fprintf(NetTrace, "SEND");		break;	    default:		fprintf(NetTrace, "- unknown qualifier %d (0x%x).",				pointer[1], pointer[1]);	    }	    break;	case TELOPT_ENVIRON:	    fprintf(NetTrace, "ENVIRON ");	    switch (pointer[1]) {	    case TELQUAL_IS:		fprintf(NetTrace, "IS ");		goto env_common;	    case TELQUAL_SEND:		fprintf(NetTrace, "SEND ");		goto env_common;	    case TELQUAL_INFO:		fprintf(NetTrace, "INFO ");	    env_common:		{		    register int noquote = 2;		    for (i = 2; i < length; i++ ) {			switch (pointer[i]) {			case ENV_VAR:			    if (pointer[1] == TELQUAL_SEND)				goto def_case;			    fprintf(NetTrace, "\" VAR " + noquote);			    noquote = 2;			    break;			case ENV_VALUE:			    fprintf(NetTrace, "\" VALUE " + noquote);			    noquote = 2;			    break;			case ENV_ESC:			    fprintf(NetTrace, "\" ESC " + noquote);			    noquote = 2;			    break;			default:			def_case:			    if (isprint(pointer[i]) && pointer[i] != '"') {				if (noquote) {				    putc('"', NetTrace);				    noquote = 0;				}				putc(pointer[i], NetTrace);			    } else {				fprintf(NetTrace, "\" %03o " + noquote,							pointer[i]);				noquote = 2;			    }			    break;			}		    }		    if (!noquote)			putc('"', NetTrace);		    break;		}	    }	    break;	default:	    if (TELOPT_OK(pointer[0]))		fprintf(NetTrace, "%s (unknown)", TELOPT(pointer[0]));	    else		fprintf(NetTrace, "%d (unknown)", pointer[i]);	    for (i = 1; i < length; i++)		fprintf(NetTrace, " %d", pointer[i]);	    break;	}	if (direction) {	    if (NetTrace == stdout)		fprintf(NetTrace, "\r\n");	    else		fprintf(NetTrace, "\n");	}    }}void SetForExit(void) {    setconnmode(0);#if defined(TN3270)    if (In3270) {	Finish3270();    }#else	/* defined(TN3270) */    do {	telrcv();			/* Process any incoming data */	EmptyTerminal();    } while (netiring.full_count());	/* While there is any */#endif	/* defined(TN3270) */    setcommandmode();    fflush(stdout);    fflush(stderr);#if defined(TN3270)    if (In3270) {	StopScreen(1);    }#endif	/* defined(TN3270) */    setconnmode(0);    EmptyTerminal();			/* Flush the path to the tty */    setcommandmode();}void Exit(int returnCode) {    SetForExit();    exit(returnCode);}void ExitString(const char *string, int returnCode) {    SetForExit();    fwrite(string, 1, strlen(string), stderr);    exit(returnCode);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -