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

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

?? tcpport.c

?? dos下開發TCP網絡的庫文件部分
?? C
?? 第 1 頁 / 共 2 頁
字號:

#define OLD 1       /* new changes not complete */

/*
 * TCPPORT - make tcp connections from virtual serial ports
 *
 * Copyright (C) 1989, 1990, 1991 Erick Engelke
 * Portions Copyright (C) 1991, Trustees of Columbia University
 *    in the City of New York.  Permission is granted to any
 *    individual or institution to use, copy, or redistribute
 *    this software as long as it is not sold for profit, provided
 *    this copyright notice is retained.
 *
 *   This program is distributed in the hope that it will be useful,
 *   but without any warranty; without even the implied warranty of
 *   merchantability or fitness for a particular purpose.
 *
 * Authors:
 * Erick Engelke (erick@development.watstar.uwaterloo.ca),
 * 	Engineering Computing, University of Waterloo.
 * Bruce Campbell (bruce@development.watstar.uwaterloo.ca),
 *      Engineering Computing, University of Waterloo
 * Frank da Cruz (fdc@columbia.edu, FDCCU@CUVMA.BITNET),
 *	Columbia University Center for Computing Activities.
 *
 *   1.00 - May 13, 1991 : E. Engelke - stole negotiations from Frank's
 *			 & F. Da Cruz   telnet portion of C-KERMIT
 *   0.04 - May  7, 1991 : E. Engelke - got echo/no echo working
 *   0.03 - Apr 24, 1991 : E. Engelke - hacked terminal negotiation
 *   0.02 - Mar 24, 1991 : E. Engelke - convert \r to \n for UNIX compatibility
 *   0.01 - Feb   , 1991 : E. Engelke - converted Bruce's program to TCP
 * - 1.00 -              : B. Campbell- created original program
 *
 *  To force a particular terminal type, set the environment variable
 *  tcpterm to something like vt102, vt100, etc.
 *
 *  To decrease the size of the executable I have used outs rather than
 *  printf.  outs is used by the Waterloo TCP kernal for displaying error
 *  messages through the BIOS services.
 *
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <mem.h>
#include <dos.h>
#include <conio.h>
#include <tcp.h>


typedef struct stk {
    word bp,di,si,ds,es,dx,cx,bx,ax,ip,cs,flgs;
};

extern outhexes( byte far *p, int n );


#define IAC     255
#define DONT    254
#define DO      253
#define WONT    252
#define WILL    251
#define SB      250
#define BREAK   243
#define SE      240

#define TELOPT_ECHO     1
#define TELOPT_SGA      3
#define TELOPT_STATUS   5
#define TELOPT_TTYPE    24
#define NTELOPTS        24

#define TCPTERM	"TCPTERM"	/* environment variable */

char termtype[ 32 ];	/* from the environment, used in negotiations */
int echo = 1;			/* default on, but hate it */


#define TRANSMIT_TICKS	  1	    /* do the transmit after this many ticks */
#define TRANSMIT_BUF_SIZE 4096
#define TRANSMIT_MAX      256       /* most to transmit at a time */

#define RECEIVE_TICKS    1
#define RECEIVE_BUF_SIZE 4096

extern unsigned long rdvct();
extern unsigned long get_general();

void far serial_2();
void far serial_t();

unsigned char transmit_buffer[ TRANSMIT_BUF_SIZE ];
unsigned char receive_buffer[ RECEIVE_BUF_SIZE ];
unsigned int tran_in = 0;
unsigned int tran_out = 0;
unsigned int rec_in = 0;
unsigned int rec_out = 0;
int transmit_clock = TRANSMIT_TICKS;
int receive_clock = RECEIVE_TICKS;

void interrupt far (*old14)(void);
void interrupt far (*old8)(void);


word oldsp, oldss;
char stack[ 8192 ];
char bigbuf[ 8192 ];	/* used to speed up tcp recvs */
longword host;
tcp_Socket *s, socketdata;
int moved_vectors = 0;
int sock_status = 0;


int sem_stack = 0;

struct stk far *stkptr;
longword recvtimeout;



/* TCP/IP Telnet negotiation support code */

static int sgaflg = 0;                      /* telnet SGA flag */

#ifndef TELCMDS
char *telcmds[] = {
    "SE", "NOP", "DMARK", "BRK",  "IP",   "AO", "AYT",  "EC",
    "EL", "GA",  "SB",    "WILL", "WONT", "DO", "DONT", "IAC",
};
#endif /* TELCMDS */

char *telopts[] = {
        "BINARY", "ECHO", "RCP", "SUPPRESS GO AHEAD", "NAME",
        "STATUS", "TIMING MARK", "RCTE", "NAOL", "NAOP",
        "NAOCRD", "NAOHTS", "NAOHTD", "NAOFFD", "NAOVTS",
        "NAOVTD", "NAOLFD", "EXTEND ASCII", "LOGOUT", "BYTE MACRO",
        "DATA ENTRY TERMINAL", "SUPDUP", "SUPDUP OUTPUT",
	"SEND LOCATION", "TERMINAL TYPE", "END OF RECORD",
	"TACACS UID", "OUTPUT MARKING", "TTYLOC", "3270 REGIME",
	"X.3 PAD", "NAWS", "TSPEED", "LFLOW", "LINEMODE"
};

int ntelopts = sizeof(telopts) / sizeof(char *);

/*
 * prototypes
 */
void do_reception(void);
int do_transmission(void);
int ttinc( int fast );
int tn_sttyp(void);
unsigned  sytek_int( unsigned ax /*, unsigned dx */ );

/*
 * send_iac - send interupt character and pertanent stuff
 *	    - return 0 on success
 */

int send_iac( char cmd, char opt)
{
    byte io_data[3];
    io_data[0] = IAC;
    io_data[1] = cmd;
    io_data[2] = opt;
    sock_fastwrite( s, io_data, 3 );
    return( !tcp_tick( s ));
}


/* Initialize a telnet connection. */
/* Returns -1 on error, 0 is ok */

int tn_ini( void )
{
    sgaflg = 0;                         /* SGA flag starts out this way. */
    if (send_iac( WILL, TELOPT_TTYPE )) return( -1 );
    if (send_iac( DO, TELOPT_SGA )) return( -1 );

/*
 *  The ECHO negotiations are not necessary for talking to full-duplex
 *  systems, and they don't seem to do any good when sent to half-duplex
 *  ones -- they still refuse to echo, and what's worse, they get into
 *  prolonged negotiation loops.  Real telnet sends only the two above
 *  at the beginning of a connection.
 */

    if (send_iac(WONT,TELOPT_ECHO)) return( -1 );  /* I won't echo. */
    if (send_iac(DO,TELOPT_ECHO)) return( -1 );	   /* Please, you echo. */
    return(0);
}

/*
 * Process in-band Telnet negotiation characters from the remote host.
 * Call with the telnet IAC character and the current duplex setting
 * (0 = remote echo, 1 = local echo).
 * Returns:
 *   0 on success
 *  -1 on failure (= internal or i/o error)
 */

#define TSBUFSIZ 41
char sb[TSBUFSIZ];                      /* Buffer for subnegotiations */

int tn_doop(int c)
{
    int x, y, n, flag;


    x = ttinc(0) & 0xff;                /* Read command character */

    switch (x) {
      case TELOPT_ECHO:                 /* ECHO negotiation. */
        if (c == WILL) {                /* Host says it will echo. */
	    if (echo) {                 /* Only reply if change required */
		echo = 0;
		if (send_iac(DO,x))  	/* Please do. */
		    return(-1);
	    }
	    return(0);
	}

        if (c == WONT) {                /* Host says it won't echo. */
            if (!echo) {                /* If I'm not echoing already */
		if (send_iac(DONT,x)) /* agree to echo. */
		    return(-1);
		echo = 1;
	    }
	    return(0);
	}

        if (c == DO) {                  /* Host wants me to echo */
	    if (send_iac(WONT,x))	/* I say I won't, */
		return(-1);
	    if (send_iac(DO,x))		/* and ask the host to echo. */
		return(-1);
	    echo = 0;
	    return( 0 );
        }
        if (c == DONT) {                /* Host wants me not to echo */
	    if (send_iac(WONT,x))	/* I say I won't. */
		return(-1);
	    echo = 0;
	    return( 0 );
        }
        return(0);


      case TELOPT_SGA:                  /* Suppress Go-Ahead */
        if (c == WONT) {                /* Host says it won't. */
            sgaflg = 1;                 /* Remember. */
            if (!echo) {                /* If we're not echoing, */
		if (send_iac(DONT,x)) /* acknowledge, */
		    return(-1);
		echo = 1;		/* and switch to local echo. */
	    }
        }
        if (c == WILL) {                /* Host says it will. */
            sgaflg = 0;                 /* Remember. */
            if (echo) {                 /* If I'm echoing now, */
		if (send_iac(DO,x))	/* this is a change, so ACK. */
		    return(-1);
		if (send_iac(DO,TELOPT_ECHO)) /* Request remote echo */
		    return(-1);
            }
        }
        return(0);


      case TELOPT_TTYPE:                /* Terminal Type */
        switch (c) {
          case DO:                      /* DO terminal type. */
	    if (send_iac(WILL,x))    /* Say I'll send it if asked. */
		return(-1);
	    return(0);

	  /* enter subnegociations */
          case SB:
            n = flag = 0;               /* Flag for when done reading SB */
            while (n < TSBUFSIZ) {      /* Loop looking for IAC SE */
                if ((y = ttinc(0)) < 0)
		  return(-1);
		y &= 0xff;              /* Make sure it's just 8 bits. */
		sb[n++] = y;            /* Save what we got in buffer. */

                if (y == IAC) {         /* If this is an IAC */
                    flag = 1;           /* set the flag. */
                } else {                /* Otherwise, */
                    if (flag && y == SE) /* if this is SE which immediately */
                      break;            /* follows IAC, we're done. */
                    else flag = 0;      /* Otherwise turn off flag. */
                }
	    }
	    if (!flag)
	       return(-1);      /* Make sure we got a valid SB */


	    if ( *sb == 1 ) {
		if ( tn_sttyp() )
                  return(-1);
	    };


          default:                      /* Others, ignore */
            return(0);
        }

      default:                          /* All others: refuse */
        switch(c) {
          case WILL:                    /* You will? */
	    if (send_iac(DONT,x))	/* Please don't. */
		return(-1);
            break;
          case DO:                      /* You want me to? */
	    if (send_iac(WONT,x))	/* I won't. */
		return(-1);
	    if (send_iac(DONT,x))	/* Don't you either. */
		return(-1);
            break;
          case DONT:                    /* (fall thru...) */
	    if (send_iac(WONT,x))	/* I won't. */
		return(-1);
          case WONT:                    /* You won't? */
            break;                      /* Good. */
          }
        return(0);
    }
}


/*
 * serial port portion
 *
 */


/* Telnet send terminal type */
/* Returns -1 on error, 0 on success */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品一二三四在线| 91视频在线看| 国产日产精品1区| 成人av片在线观看| 亚洲精品写真福利| 欧美日韩国产高清一区二区三区| 日本欧美在线观看| 久久亚洲欧美国产精品乐播 | 国精产品一区一区三区mba桃花| 久久这里只有精品6| 不卡的av在线| 亚洲电影一级片| 欧美zozo另类异族| 国产成人夜色高潮福利影视| 亚洲欧洲中文日韩久久av乱码| 在线精品国精品国产尤物884a| 午夜电影一区二区| 2020国产精品| 91亚洲精品久久久蜜桃网站| 日日欢夜夜爽一区| 久久嫩草精品久久久精品一| 91视频在线观看| 日韩av午夜在线观看| 久久九九久久九九| 91成人在线精品| 蜜臀av性久久久久av蜜臀妖精| 国产欧美日韩在线| 欧美性受xxxx黑人xyx性爽| 日本欧美在线看| 国产精品久久久久久久久免费桃花| 色av一区二区| 久久国产精品免费| 亚洲久草在线视频| 欧美一区二区大片| 99国产精品久| 奇米777欧美一区二区| 国产精品久久久久影院| 欧美精品亚洲二区| 风间由美一区二区三区在线观看| 亚洲综合一区二区三区| 久久久久国产精品人| 欧洲精品在线观看| 国产精一区二区三区| 亚洲一区二区三区四区在线免费观看 | 国产一区二区三区在线观看免费视频| 国产精品久久久久久久久快鸭| 6080国产精品一区二区| www.久久精品| 日本不卡中文字幕| 最新日韩av在线| 日韩欧美国产成人一区二区| 91年精品国产| 久草精品在线观看| 亚洲一区二区精品久久av| 国产欧美中文在线| 欧美一区二区视频在线观看2020| 成人国产免费视频| 麻豆成人久久精品二区三区红 | 一区二区三区在线看| www国产成人| 欧美日韩一区二区不卡| av一二三不卡影片| 精品一区二区三区免费| 亚洲高清免费视频| 中文字幕一区二区三区乱码在线| 日韩欧美激情一区| 欧美最猛性xxxxx直播| 东方aⅴ免费观看久久av| 蜜臀av一级做a爰片久久| 一区二区三区四区av| 日本一区二区免费在线| 日韩欧美在线影院| 欧美性猛交一区二区三区精品| 国产69精品一区二区亚洲孕妇| 日韩电影免费在线看| 一区二区欧美国产| 中文字幕在线播放不卡一区| 久久综合狠狠综合久久综合88| 欧美精品三级日韩久久| 色先锋aa成人| 成人av动漫在线| 国产精品综合一区二区三区| 蜜乳av一区二区| 五月综合激情婷婷六月色窝| 一区二区在线免费观看| 国产精品免费网站在线观看| 久久久高清一区二区三区| 精品国一区二区三区| 91精品欧美一区二区三区综合在| 欧美三片在线视频观看| 色婷婷精品大视频在线蜜桃视频| 国产成人免费视频网站| 国产一区免费电影| 国产一区二区在线免费观看| 欧美a一区二区| 日韩成人免费看| 视频一区国产视频| 偷拍一区二区三区| 亚洲成人手机在线| 亚洲国产精品天堂| 亚洲国产中文字幕| 一区二区三区欧美激情| 一区二区三区在线观看网站| 亚洲欧美国产三级| 亚洲欧美另类在线| 亚洲男人的天堂av| 亚洲精品久久久久久国产精华液| 亚洲欧美激情小说另类| 亚洲激情男女视频| 亚洲午夜国产一区99re久久| 亚洲妇女屁股眼交7| 亚洲123区在线观看| 日韩精彩视频在线观看| 免费av成人在线| 国内成人精品2018免费看| 国产成人综合视频| 成人av中文字幕| 91偷拍与自偷拍精品| 欧美日韩专区在线| 日韩一区二区视频在线观看| 日韩免费观看2025年上映的电影 | 亚洲超碰97人人做人人爱| 日韩高清电影一区| 久久爱www久久做| 国产一区二区三区四区五区入口| 国产不卡高清在线观看视频| 豆国产96在线|亚洲| 成人av在线一区二区| 91丨九色丨国产丨porny| 色婷婷av一区| 在线视频综合导航| 欧美日韩久久久久久| 日韩三级在线免费观看| 日韩免费一区二区三区在线播放| 久久亚洲精品小早川怜子| 国产亚洲精品精华液| 亚洲精品久久嫩草网站秘色| 亚洲一区二区三区四区在线 | 国产精品天干天干在观线| 亚洲婷婷国产精品电影人久久| 国产精品久久久久久久久免费樱桃| 亚洲日本免费电影| 日韩av在线发布| 国内成人免费视频| 99久久精品国产导航| 欧美亚一区二区| 精品国产免费人成电影在线观看四季| 久久天堂av综合合色蜜桃网| 一区在线播放视频| 亚洲高清免费观看| 久久er精品视频| 国产精品一区二区在线看| 色呦呦一区二区三区| 欧美中文字幕一区| 日韩欧美在线123| 欧美激情综合五月色丁香小说| 国产精品久久久久久久岛一牛影视| 亚洲一区二区三区国产| 日本人妖一区二区| 成人av资源网站| bt欧美亚洲午夜电影天堂| 欧美日韩国产中文| 久久久www成人免费毛片麻豆 | 日本韩国欧美一区二区三区| 欧美一区二区三区不卡| 国产亚洲欧美在线| 亚洲国产精品一区二区久久恐怖片| 丝袜国产日韩另类美女| 国产曰批免费观看久久久| 91久久精品国产91性色tv| 欧美精品在线一区二区三区| 久久综合色综合88| 樱花影视一区二区| 国产一区二区三区不卡在线观看 | 国产成人精品影院| 不卡在线观看av| 欧美一区二区三区喷汁尤物| 最新久久zyz资源站| 日韩中文字幕麻豆| www.在线成人| 91精品欧美福利在线观看| 亚洲蜜桃精久久久久久久| 五月激情综合色| 91在线一区二区| 欧美精品一区二区三区在线| 亚洲色图在线看| 国产一区二区三区四区在线观看| 在线看日韩精品电影| 国产色91在线| 一区二区三区四区激情 | 天天综合色天天综合| 国产精品系列在线播放| 色久优优欧美色久优优| 日韩写真欧美这视频| 最新热久久免费视频| 精东粉嫩av免费一区二区三区 | 国产高清精品网站| 欧美日韩高清影院| 国产精品美女www爽爽爽| 青青草国产精品亚洲专区无|