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

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

?? telnet.c

?? 一個專為嵌入式系統編寫的小型TCPIP協議棧
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* Telnet utility for 'TCP/IP Lean' (c) Iosoft Ltd. 2000

This software is only licensed for distribution with the book 'TCP/IP Lean',
and may only be used for personal experimentation by the purchaser
of that book, on condition that this copyright notice is retained.
For commercial licensing, contact license@iosoft.co.uk

This is experimental software; use it entirely at your own risk. The author
offers no warranties of any kind, including its fitness for purpose. */
/*
** v0.01 JPB 27/1/00
** v0.02 JPB 28/1/00  First steps toward TCP implementation
** v0.03 JPB 31/1/00  Added timeout
** v0.04 JPB 1/2/00   Added duplicate segment handling
** v0.05 JPB 2/2/00   Added TCP upcall, and active close
** v0.06 JPB 3/2/00   Simplified socket closure
** v0.07 JPB 4/2/00   Simplified state machine
** v0.08 JPB 4/2/00   Split upcalls into client & server
** v0.09 JPB 7/2/00   Improved active close
** v0.10 JPB 1/3/00   Fixed 'gate_ip' problem when no gateway specified
**                    Fixed problem with SLIP node matching
** v0.11 JPB 1/3/00   changed command-line interface to include port names
** v0.12 JPB 20/3/00  Added LiteLink and modem support
** v0.13 JPB 23/3/00  Used upcall pointers in TCP.C
** v0.14 JPB 6/4/00   Replaced 'strcmpi' with 'stricmp' for DJGPP compatibility
** v0.15 JPB 21/4/00  Fixed TCP problem receiving FIN + data
** v0.16 JPB 5/5/00   Minor cosmetic improvements to TCP code
** v0.17 JPB 3/7/00   Changed default config file to TCPLEAN.CFG
**                    Revised header for book CD
*/

#define VERSION "0.17"

#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <signal.h>
#include <time.h>

#include "ether.h"
#include "netutil.h"
#include "net.h"
#include "ip.h"
#include "tcp.h"

#define CFGFILE     "tcplean.cfg"   /* Default config filename */
#define CFGEXT      ".cfg"          /* Default config extension */
#define MAXNETCFG   40              /* Max length of a net config string */
#define DEFPORT     TELPORT         /* Default port number */

/* Test page for Web server */
#define MYPAGE "HTTP/1.0 200 OK\r\n\r\n\
    <html><body>Test page from telnet server v" VERSION "</body></html>"

GENFRAME genframe;                  /* Frame for network Tx/Rx */
char cfgfile[MAXPATH+5]=CFGFILE;    /* Config filename */
char netcfg[MAXNETCFG+1]="??";      /* Network config string */
extern BYTE bcast[MACLEN];          /* Broadcast Ethernet addr */
NODE  locnode;                      /* My Ethernet and IP addresses */
int breakflag;                      /* Flag to indicate ctrl-break pressed */
char *clientcmd;                    /* Pointer to command-line command */

/* Debug flags */
extern int netdebug;                /* Verbose packet display */
extern int tcpdebug;                /* TCP frame display */
extern int statedebug;              /* TCP state display */

/* Socket storage */
#define NSOCKS 2
TSOCK tsocks[NSOCKS] =              /* Initialise index num and buffer sizes */
{
    {1,{_CBUFFLEN_},{_CBUFFLEN_}}, {2,{_CBUFFLEN_},{_CBUFFLEN_}}
};

/* Telnet options */
BYTE telopts[] =
{
    TEL_IAC, TEL_DO,    TEL_SGA,    /* Do suppress go-ahead */
    TEL_IAC, TEL_WONT,  TEL_ECHO,   /* Won't echo */
    TEL_IAC, TEL_WONT,  TEL_AUTH    /* Won't authenticate */
};

/* Function pointers: upcalls from TCP/IP stack */
extern NODE *(*get_locnode_n)(int n);                   /* Get local node */
extern int (*server_upcall)(TSOCK *ts, CONN_STATE conn);/* TCP server action */
extern int (*client_upcall)(TSOCK *ts, CONN_STATE conn);/* TCP client action */

/* Prototypes */
WORD read_netconfig(char *fname, NODE *np);
NODE *locnode_n(int n);
int server_action(TSOCK *ts, CONN_STATE conn);
int client_action(TSOCK *ts, CONN_STATE conn);
void do_teldisp(TSOCK *ts);
void do_receive(GENFRAME *gfp);
void do_poll(GENFRAME *gfp);
WORD str2service(char *str);
void disp_usage(void);
void break_handler(int sig);

int main(int argc, char *argv[])
{
    int args=0, err=0, client=0, fail, n;
    char *p, temps[18], k=0, c;
    WORD dtype;
    GENFRAME *gfp;
    LWORD mstimer;
    TSOCK *ts;
    NODE rem;

    printf("TELNET v" VERSION "\n");            /* Sign on */
    get_locnode_n = locnode_n;                  /* Set upcall ptrs to funcs */
    server_upcall = server_action;
    client_upcall = client_action;
    signal(SIGINT, break_handler);              /* Trap ctrl-C */
    ts = &tsocks[0];                            /* Pointer to client socket */
    memset(&rem, 0, sizeof(rem));               /* Preset remote port number */
    rem.port = DEFPORT;
    while (argc > ++args)                       /* Process command-line args */
    {
        if ((c=argv[args][0])=='-' || c=='/')
        {
            switch (toupper(argv[args][1]))
            {
            case 'C':                           /* -C: config filename */
                strncpy(cfgfile, argv[++args], MAXPATH);
                if ((p=strrchr(cfgfile, '.'))==0 || !isalpha(*(p+1)))
                    strcat(cfgfile, CFGEXT);
                break;
            case 'S':                           /* -S: display TCP states */
                statedebug = 1;
                break;
            case 'T':                           /* -T: display TCP segments */
                tcpdebug = 1;
                break;
            case 'V':                           /* -V: verbose packet display */
                netdebug |= 1;
                break;
            case 'X':                           /* -X: hex packet display */
                netdebug |= 2;
                break;
            default:
                err = 1;
            }
        }
        else if (client==0 && isdigit(c))       /* If client mode.. */
        {
            rem.ip = atoip(argv[args]);         /* Get destination IP address */
            client++;
        }                                       /* ..then port num/name */
        else if (client==1 && (rem.port=str2service(argv[args]))!=0)
            client++;
        else if (client == 2)
        {
            clientcmd = argv[args];             /* ..then command string */
            client++;
        }

    }
    if (err || rem.port==0)                     /* Prompt user if error */
        disp_usage();
    else if (!(dtype=read_netconfig(cfgfile, &locnode)))
        printf("Invalid configuration '%s'\n", cfgfile);
    else
    {
        rem.dtype = genframe.g.dtype = dtype;   /* Set frame driver type */
        gfp = &genframe;                        /* Get pointer to frame */
        printf("IP %s", ipstr(locnode.ip, temps));
        printf(" mask %s", ipstr(locnode.mask, temps));
        if (locnode.gate)
            printf(" gate %s", ipstr(locnode.gate, temps));
        if (dtype & DTYPE_ETHER)
            printf(" Ethernet %s", ethstr(locnode.mac, temps));
        if (client && !on_subnet(rem.ip, &locnode) && !locnode.gate)
            printf("\nWARNING: no gateway specified!");
        printf("\nPress ESC or ctrl-C to exit\n\n");
        if (client)                             /* If client, open socket */
            open_tcp(ts, gfp, &locnode, &rem);
        while (!breakflag && k!=0x1b)           /* Main loop.. */
        {
            do_receive(gfp);                    /* Receive frames */
            do_poll(gfp);                       /* Poll net drivers */
            if (client)
            {
                do_teldisp(ts);                 /* Telnet client display */
                if (!ts->state)                 /* If closed */
                    breakflag = 1;              /* ..exit from main loop */
                else if (k)                     /* If key pressed.. */
                    buff_in(&ts->txb, (BYTE *)&k, 1);
                k = 0;                          /* ..send it */
            }
            if (kbhit())                        /* Get keypress */
                k = getch();
        }                                       /* Close connection */
        if (k)
            printf("Closing...\n");
        mstimeout(&mstimer, 0);                 /* Refresh timer */
        do
        {                                       /* Loop until conns closed */
            for (n=fail=0; n<NSOCKS; n++)
                fail += !close_tcp(&tsocks[n]);
            do_receive(gfp);
            do_poll(gfp);                       /* ..or timeout */
        } while (!mstimeout(&mstimer, 1000) && fail);
        if (fail)                               /* If still open.. */
        {
            printf("Resetting connections\n");
            for (n=0; n<NSOCKS; n++)            /* ..send reset */
                reset_tcp(&tsocks[n], gfp);
            while (!mstimeout(&mstimer, 1000))
            {                                   /* ..and wait until sent */
                do_receive(gfp);
                do_poll(gfp);
            }
        }
        close_net(dtype);                       /* Shut down net driver */
    }
    return(0);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91日韩在线专区| 欧美变态凌虐bdsm| 欧美mv日韩mv国产网站app| 91看片淫黄大片一级在线观看| 亚洲在线免费播放| 国产美女视频一区| 欧美色区777第一页| 国产日韩欧美一区二区三区乱码| 亚洲线精品一区二区三区| 国产成人综合在线| 日韩一区二区不卡| 亚洲国产aⅴ天堂久久| 91麻豆视频网站| 欧美韩国日本综合| 国产精品白丝av| 91精品国产免费久久综合| 一区二区日韩av| 97se亚洲国产综合自在线观| 久久久蜜臀国产一区二区| 美女网站色91| 欧美夫妻性生活| 亚洲国产日韩av| 91麻豆精东视频| 亚洲欧美综合在线精品| 成人在线视频一区二区| 久久亚洲综合色一区二区三区| 捆绑变态av一区二区三区| 欧美日本一道本在线视频| 亚洲午夜国产一区99re久久| 色综合色综合色综合色综合色综合 | 亚洲国产精品一区二区尤物区| 99久久国产综合精品女不卡| 国产免费久久精品| 国产69精品久久99不卡| 国产精品午夜免费| av色综合久久天堂av综合| 国产精品美女久久久久久久| 欧美国产国产综合| 亚洲成人三级小说| 欧美精品久久99| 日韩精品高清不卡| 日韩一级片网站| 狠狠色伊人亚洲综合成人| 久久伊99综合婷婷久久伊| 国产呦精品一区二区三区网站 | 91麻豆文化传媒在线观看| 最近日韩中文字幕| 在线视频一区二区三| 午夜av电影一区| 欧美va在线播放| 国产91高潮流白浆在线麻豆| 中文字幕在线一区| 欧洲视频一区二区| 丝袜美腿亚洲色图| 亚洲精品一区二区三区四区高清| 国产在线精品不卡| 亚洲精品中文字幕乱码三区 | 99久久久国产精品| 亚洲永久免费视频| 日韩免费观看高清完整版| 国产99久久久国产精品| 一区二区三区精品视频在线| 日韩一级片在线观看| 成人一道本在线| 亚洲一区二区三区影院| 欧美xxxx在线观看| 99久久99久久免费精品蜜臀| 日韩中文字幕一区二区三区| 久久久久久99久久久精品网站| 91在线精品一区二区| 日本欧美一区二区在线观看| 久久精品一级爱片| 欧美色中文字幕| 国产91在线观看丝袜| 亚洲成国产人片在线观看| 久久久久久久电影| 欧美精品日韩综合在线| 国产成人av资源| 青娱乐精品在线视频| 中文字幕一区不卡| 欧美精品一区二区久久婷婷| 色狠狠综合天天综合综合| 狠狠色综合日日| 午夜精品久久久久久久99樱桃| 欧美一二三四在线| 开心九九激情九九欧美日韩精美视频电影 | 色综合久久久久综合体| 国产一区二三区| 亚洲成年人影院| 亚洲人妖av一区二区| 欧美精品一区二区三区蜜臀| 欧美日韩一区三区四区| 不卡视频在线看| 国产乱码精品1区2区3区| 五月天中文字幕一区二区| 亚洲欧洲精品一区二区三区不卡| 欧美r级在线观看| 69精品人人人人| 欧美色成人综合| 99热在这里有精品免费| 国产成a人亚洲| 国产在线视频不卡二| 免费成人在线视频观看| 偷拍日韩校园综合在线| 亚洲成人激情综合网| 亚洲天堂网中文字| 中文字幕永久在线不卡| 国产拍欧美日韩视频二区 | 欧美男人的天堂一二区| 91豆麻精品91久久久久久| 色综合天天综合网天天看片| 成人午夜免费视频| 国产超碰在线一区| 国产成人免费视频精品含羞草妖精| 久久99精品久久久久久动态图 | 成人网在线免费视频| 精品一区二区成人精品| 久久精品国产精品青草| 美脚の诱脚舐め脚责91 | 国产欧美一区二区在线观看| 精品黑人一区二区三区久久 | 亚洲欧美aⅴ...| 亚洲国产精品ⅴa在线观看| 国产欧美精品一区二区色综合 | 丝袜诱惑亚洲看片| 亚洲午夜免费福利视频| 亚洲一区二区在线免费看| 亚洲与欧洲av电影| 日本特黄久久久高潮| 久久99最新地址| 国产·精品毛片| 在线视频欧美区| 91精品国产福利在线观看| 日韩精品一区二区三区视频播放| 久久欧美中文字幕| 国产精品欧美极品| 亚洲另类在线视频| 日韩电影一二三区| 国产精品一区在线观看乱码| 国产99久久久久| 色哟哟精品一区| 91精品综合久久久久久| 久久综合精品国产一区二区三区| 国产欧美一区二区精品忘忧草| 亚洲婷婷在线视频| 喷白浆一区二区| 成人精品视频一区二区三区 | 久久综合中文字幕| 国产精品久久久久久久岛一牛影视| 亚洲一区二区五区| 激情文学综合丁香| 色婷婷综合久久久中文字幕| 日韩欧美国产wwwww| 国产精品美女久久久久久2018| 亚洲国产日韩精品| 国产91综合网| 91精选在线观看| 国产精品卡一卡二卡三| 日本视频在线一区| 99re成人精品视频| 精品国产一区二区精华| 亚洲综合一区二区三区| 狠狠久久亚洲欧美| 欧美日本在线看| 国产精品久久午夜| 久久精品国产99国产| 在线观看精品一区| 中文天堂在线一区| 奇米四色…亚洲| 欧洲一区二区三区免费视频| 亚洲国产精品精华液2区45| 青青草国产精品97视觉盛宴| 91麻豆精品在线观看| 国产性做久久久久久| 玖玖九九国产精品| 欧美丝袜第三区| 综合久久久久久| 国产精品一区二区果冻传媒| 欧美人与禽zozo性伦| 日韩一区日韩二区| 国产精品综合久久| 26uuu久久天堂性欧美| 午夜一区二区三区视频| 色综合色狠狠天天综合色| 国产精品国产a级| 成人性生交大合| 国产欧美日韩麻豆91| 国产一区二区三区观看| 欧美大片在线观看一区二区| 亚洲国产精品综合小说图片区| 成人高清视频在线| 国产免费成人在线视频| 国产精品伊人色| 久久久久久久久久久电影| 久久精品国内一区二区三区| 欧美一区二区视频在线观看2022| 精品伦理精品一区| 久热成人在线视频| 久久亚洲春色中文字幕久久久| 精品在线你懂的|