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

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

?? telnet.c

?? 嵌入式小型TCPIP協(xié)議棧
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/* 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);
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合夜色一区| 日韩vs国产vs欧美| 欧美日韩电影一区| 成人午夜看片网址| 青娱乐精品在线视频| 欧美一区欧美二区| 99视频热这里只有精品免费| 国产精品毛片大码女人| 91精品国产综合久久精品app | 99在线精品免费| 欧美激情中文字幕| 久久99国产精品免费网站| 久久久国产一区二区三区四区小说 | a4yy欧美一区二区三区| 久久精品一区二区三区四区| 久久精品99国产精品| 欧美大片拔萝卜| 日韩精品成人一区二区在线| 日韩免费电影一区| 日韩精品成人一区二区在线| 国产婷婷精品av在线| 国模少妇一区二区三区| 日韩精品一区在线观看| 色综合久久综合网欧美综合网 | 国产一区视频在线看| 亚洲色欲色欲www在线观看| 日韩一卡二卡三卡四卡| 色婷婷香蕉在线一区二区| 国产精品毛片a∨一区二区三区| 欧美性大战久久| 不卡一区二区中文字幕| 韩国欧美国产1区| 国产日韩精品久久久| 欧美日韩大陆一区二区| 99精品欧美一区二区蜜桃免费| 国产精品成人免费在线| 欧美tickling挠脚心丨vk| 精品一区二区三区欧美| 中文字幕欧美日韩一区| av爱爱亚洲一区| 国产一区二区三区高清播放| 日本特黄久久久高潮| 一区二区三区成人| 欧美一区二区三区爱爱| 成人高清伦理免费影院在线观看| 日韩精品电影在线| 在线不卡一区二区| 99精品久久免费看蜜臀剧情介绍| 国内偷窥港台综合视频在线播放| 亚洲成a人片综合在线| 欧美精选在线播放| 国产真实乱偷精品视频免| 肉色丝袜一区二区| 亚洲亚洲精品在线观看| 亚洲欧美日韩国产综合| 亚洲欧洲日韩综合一区二区| 欧美日韩一区二区三区在线看| 日韩不卡一区二区三区| 日韩精品久久理论片| 亚洲成av人**亚洲成av**| 亚洲影视资源网| 亚洲在线免费播放| 欧美成人午夜电影| 国产a区久久久| 亚洲国产日韩精品| 亚洲国产乱码最新视频| 精品国产免费一区二区三区香蕉| 666欧美在线视频| 欧美一区午夜精品| 欧美大片免费久久精品三p | 91麻豆精品国产91| 成人性生交大片免费看视频在线 | 国内一区二区视频| 夜夜亚洲天天久久| 久久婷婷国产综合国色天香 | 色网综合在线观看| 奇米精品一区二区三区在线观看一| 亚洲成国产人片在线观看| 国产精品沙发午睡系列990531| 欧美亚州韩日在线看免费版国语版| 色美美综合视频| 国产一区二区三区在线看麻豆| 国产自产v一区二区三区c| 麻豆久久一区二区| 免费高清在线一区| 久草这里只有精品视频| 国产乱淫av一区二区三区| 国产精品色哟哟| 亚洲精品免费在线| 精品日韩99亚洲| 欧美午夜不卡视频| 欧美一区二区福利视频| 久久久久97国产精华液好用吗| 欧美日韩一区二区三区在线| 7777女厕盗摄久久久| 91香蕉视频mp4| 欧美亚洲综合久久| 97久久精品人人爽人人爽蜜臀| 色婷婷国产精品| 欧美一级日韩免费不卡| 久久久精品免费免费| 亚洲视频中文字幕| 三级久久三级久久| 亚洲一区二区精品久久av| 麻豆国产精品777777在线| 丰满少妇在线播放bd日韩电影| 在线看国产一区| 99视频精品全部免费在线| 欧美三级韩国三级日本三斤| 亚洲精品一线二线三线| 伊人开心综合网| 精品一区二区三区久久久| 91欧美激情一区二区三区成人| 成人毛片在线观看| 成人丝袜视频网| 91在线免费视频观看| 6080亚洲精品一区二区| 欧美日韩一本到| 久久午夜免费电影| 亚洲国产成人av网| proumb性欧美在线观看| 97久久超碰精品国产| 精品乱码亚洲一区二区不卡| 精品国产一二三| 久久久国产一区二区三区四区小说 | 最近日韩中文字幕| 欧美国产日本视频| 欧美aaa在线| 欧美午夜精品久久久久久孕妇 | 樱花影视一区二区| 激情综合一区二区三区| 国产裸体歌舞团一区二区| 久久国产精品露脸对白| 久久99九九99精品| 久久精品国产色蜜蜜麻豆| 久久成人免费网站| 欧美日韩国产乱码电影| 亚洲同性gay激情无套| 国精品**一区二区三区在线蜜桃| 欧美亚洲综合在线| 日韩欧美高清一区| 午夜精品福利一区二区三区蜜桃| 国产99精品视频| 久久女同互慰一区二区三区| 日韩精品一二三| 欧美性色欧美a在线播放| 欧美一区二区日韩| 久久人人爽爽爽人久久久| 日本欧美肥老太交大片| 欧美狂野另类xxxxoooo| 2024国产精品| 亚洲亚洲人成综合网络| 色香蕉成人二区免费| 亚洲欧洲www| 亚洲天堂a在线| 一区二区三区免费在线观看| 成人三级在线视频| 欧美日韩黄色影视| 亚洲影院久久精品| 国产一区二区三区四区五区入口 | 狠狠色狠狠色合久久伊人| 国产白丝网站精品污在线入口| 欧美成人三级在线| 狠狠色狠狠色综合日日91app| 91精品国产91久久久久久最新毛片| 国产精品自拍网站| 精品国产一区久久| 国产精品 日产精品 欧美精品| 色猫猫国产区一区二在线视频| 欧美一区二区三区人| 欧美激情在线看| hitomi一区二区三区精品| 欧美一区二区三区日韩视频| 日韩电影网1区2区| 精品精品欲导航| 国产一区二区三区黄视频 | 欧美日韩在线亚洲一区蜜芽| 欧美xxxxxxxx| 国产一区二区三区国产| 国产精品网曝门| 91麻豆免费观看| 亚洲国产日韩一区二区| 91麻豆精品国产无毒不卡在线观看| 一区二区三区在线观看网站| 国产一区欧美二区| 911精品产国品一二三产区| 亚洲四区在线观看| 国产成人鲁色资源国产91色综| 欧美国产日韩精品免费观看| 91美女福利视频| 国产精品麻豆视频| 91久久精品国产91性色tv| 国产欧美va欧美不卡在线| 91久久香蕉国产日韩欧美9色| 天天色天天爱天天射综合| 欧美日韩在线电影| 亚洲同性gay激情无套| 欧美丝袜自拍制服另类| 久久99深爱久久99精品| 亚洲精品v日韩精品|