亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
国产盗摄一区二区| www久久精品| 5566中文字幕一区二区电影| 日韩一级免费观看| 日本一区二区三区电影| 亚洲色图欧洲色图婷婷| 日本欧美一区二区| 国产在线精品不卡| 91免费版在线看| 日韩三级.com| 国产女主播一区| 亚洲午夜私人影院| 国产一区二区在线观看免费 | 337p亚洲精品色噜噜狠狠| 精品少妇一区二区三区免费观看| 国产精品午夜在线观看| 午夜私人影院久久久久| 色综合天天综合在线视频| 亚洲欧美视频在线观看视频| 亚洲免费在线播放| 国产色产综合产在线视频| 成熟亚洲日本毛茸茸凸凹| 日韩精品一区二区三区四区 | 99精品国产视频| 国产成人综合在线| 成人夜色视频网站在线观看| 在线成人免费视频| 精品免费日韩av| 91热门视频在线观看| 国产精品综合视频| 91在线视频网址| 国产精品久久久久久久久搜平片| 久久久久久久久久久电影| 亚洲自拍偷拍av| 日本韩国欧美三级| 一区二区在线观看视频在线观看| 91在线视频免费观看| 亚洲精品国产a| 欧美色综合天天久久综合精品| 一区二区三区四区在线播放 | 精品系列免费在线观看| 日韩欧美一级二级三级| 精久久久久久久久久久| 久久亚洲欧美国产精品乐播 | 亚洲国产成人一区二区三区| 国产成人无遮挡在线视频| 欧美激情一区二区三区全黄| 99麻豆久久久国产精品免费优播| 亚洲欧美在线观看| 欧美性色欧美a在线播放| 亚洲大尺度视频在线观看| 在线综合视频播放| 久久成人久久爱| 中文字幕一区在线| 欧美日本国产视频| 韩国av一区二区三区四区 | 国产suv精品一区二区三区| 国产精品欧美久久久久无广告 | 日韩一区二区视频| 国产精品一二三四| 亚洲精品乱码久久久久久黑人 | 国产精品久线观看视频| 91久久精品一区二区三区| 免费精品视频在线| 国产午夜精品美女毛片视频| 91欧美一区二区| 蜜臀99久久精品久久久久久软件| 国产婷婷一区二区| 欧美视频中文字幕| 国产激情偷乱视频一区二区三区| 一区二区三区电影在线播| 91精品久久久久久久99蜜桃| 粉嫩13p一区二区三区| 亚欧色一区w666天堂| 国产午夜精品在线观看| 在线播放中文一区| 91网址在线看| 国产资源在线一区| 亚洲女与黑人做爰| 久久日韩粉嫩一区二区三区| 色婷婷国产精品| 国内欧美视频一区二区 | 色av一区二区| 久久66热re国产| 亚洲国产欧美另类丝袜| 国产精品欧美久久久久一区二区| 欧美一区二区不卡视频| 91免费国产视频网站| 国产suv一区二区三区88区| 日韩成人dvd| 伊人开心综合网| 久久人人超碰精品| 日韩欧美国产wwwww| 欧美日韩国产一区二区三区地区| 成人av在线一区二区三区| 韩国中文字幕2020精品| 天堂资源在线中文精品| 亚洲人成网站在线| 国产精品青草久久| 国产精品区一区二区三区| 久久久久久久久久看片| 日韩一区二区三区免费看| 色狠狠桃花综合| 色婷婷av久久久久久久| 丰满白嫩尤物一区二区| 激情伊人五月天久久综合| 奇米在线7777在线精品| 亚洲国产aⅴ成人精品无吗| 有码一区二区三区| 亚洲免费在线电影| 一区二区三区精品在线观看| 国产精品久久久久影视| 国产精品网站一区| 国产精品理论在线观看| 国产精品女同一区二区三区| 国产日韩av一区| 亚洲国产高清不卡| 亚洲欧美国产三级| 一区二区三区精品| 同产精品九九九| 美女尤物国产一区| 国产伦精品一区二区三区视频青涩 | 日韩电影一区二区三区四区| 亚洲国产日日夜夜| 亚洲香蕉伊在人在线观| 亚洲国产va精品久久久不卡综合| 伊人一区二区三区| 日av在线不卡| 久久99久久久欧美国产| 国产精品一区专区| 成人免费视频caoporn| 91在线视频在线| 欧美日韩国产首页| 欧美一区二区免费视频| 亚洲精品一区二区三区香蕉| 欧美国产视频在线| 亚洲欧美另类图片小说| 污片在线观看一区二区| 国产在线精品一区二区夜色 | 不卡视频在线观看| 卡一卡二国产精品| 福利一区二区在线观看| 99国产精品国产精品久久| 欧美亚洲日本一区| 日韩精品综合一本久道在线视频| 久久久久久久久久久黄色| 亚洲欧美日韩久久精品| 亚洲成av人在线观看| 狠狠色丁香九九婷婷综合五月| 成人av网址在线观看| 欧美日韩在线精品一区二区三区激情| 日韩免费一区二区三区在线播放| 欧美—级在线免费片| 亚洲成人一二三| 国产精品一区二区三区四区| 色狠狠色噜噜噜综合网| 久久影视一区二区| 亚洲3atv精品一区二区三区| 国产电影一区二区三区| 欧美精品久久久久久久多人混战 | 国产自产2019最新不卡| 欧美亚洲另类激情小说| 久久久久久久综合色一本| 亚洲国产美女搞黄色| 国产成人精品免费| 欧美高清一级片在线| 国产精品视频看| 日韩电影免费在线| 色呦呦国产精品| 国产日产亚洲精品系列| 蜜臀av性久久久久蜜臀av麻豆| 99这里只有精品| 久久噜噜亚洲综合| 日韩电影在线免费观看| 色爱区综合激月婷婷| 国产精品视频一二三区| 全国精品久久少妇| 欧美日韩在线免费视频| 亚洲日本一区二区| 国产成人综合自拍| 欧美mv日韩mv亚洲| 天堂成人免费av电影一区| 91国偷自产一区二区三区成为亚洲经典| 欧美精品一区二区三区蜜桃| 日韩在线a电影| 在线精品国精品国产尤物884a| 国产精品视频麻豆| 国产成人在线视频网站| 2022国产精品视频| 日本欧洲一区二区| 欧美另类一区二区三区| 亚洲综合激情小说| 欧美性猛片aaaaaaa做受| 综合久久国产九一剧情麻豆| 大桥未久av一区二区三区中文| 久久久精品欧美丰满| 国产一区二区三区蝌蚪| 久久精品视频免费观看| 国产成人av一区二区三区在线| 久久综合九色综合欧美98|