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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? telnet.c

?? 內(nèi)容包括: 嵌入式TCPIP協(xié)議棧應(yīng)用主機(jī)端程序(VC6源碼);如何構(gòu)造嵌入式Linux系統(tǒng);基于ARM的嵌入式TCPIP協(xié)議的實(shí)現(xiàn)等
?? C
?? 第 1 頁 / 共 2 頁
字號(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);
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产在线不卡一区| 亚洲成av人片观看| av一本久道久久综合久久鬼色| 亚洲免费三区一区二区| 91色视频在线| 麻豆精品一区二区av白丝在线| 久久综合九色综合97婷婷女人| 成人激情免费视频| 亚洲bt欧美bt精品777| 久久久久久久久久久电影| 91久久精品国产91性色tv| 美女精品一区二区| 亚洲欧洲一区二区三区| 欧美电影影音先锋| 国产麻豆欧美日韩一区| 一区二区成人在线视频| 久久综合狠狠综合| 欧美日韩在线免费视频| 国产精品一区在线观看你懂的| 亚洲欧美日韩在线| 7777精品伊人久久久大香线蕉的| 大桥未久av一区二区三区中文| 日韩精品三区四区| 国产精品剧情在线亚洲| 精品欧美乱码久久久久久1区2区| 972aa.com艺术欧美| 国产一区二区毛片| 亚洲国产综合91精品麻豆| 日本一区免费视频| 欧美成人女星排名| 欧美精品自拍偷拍| 色婷婷久久99综合精品jk白丝 | 婷婷亚洲久悠悠色悠在线播放| 久久综合久色欧美综合狠狠| 欧美va亚洲va在线观看蝴蝶网| 欧美日本在线一区| 欧美日韩一区二区三区高清| 欧美亚洲日本国产| 一道本成人在线| 色综合色狠狠天天综合色| 成人av免费观看| 北岛玲一区二区三区四区| 国产高清精品久久久久| 国产精华液一区二区三区| 国产一区二区影院| 懂色av一区二区夜夜嗨| 国产成人激情av| 成人免费视频一区二区| 99久久99久久精品免费观看 | 蜜臀av在线播放一区二区三区| 亚洲妇女屁股眼交7| 日韩中文字幕亚洲一区二区va在线| 亚洲国产精品久久人人爱蜜臀| 亚洲小说欧美激情另类| 丝袜美腿一区二区三区| 久久国产乱子精品免费女| 久久av资源站| 大白屁股一区二区视频| 91蜜桃在线免费视频| 欧美综合一区二区| 欧美一级理论片| 久久久久久久久久久久久久久99| 日本一二三四高清不卡| 亚洲乱码国产乱码精品精可以看| 夜夜爽夜夜爽精品视频| 日本91福利区| 国产成人亚洲综合a∨猫咪| 99综合电影在线视频| 在线观看欧美精品| 制服丝袜中文字幕亚洲| 国产亚洲综合在线| 亚洲美女视频在线观看| 日韩va欧美va亚洲va久久| 国内精品国产成人| 成人精品高清在线| 欧美图区在线视频| 亚洲精品一区二区三区香蕉| 亚洲国产精品精华液2区45| 亚洲小少妇裸体bbw| 国产一区二区三区av电影| 99久久久久免费精品国产 | 日韩av午夜在线观看| 欧美一区二区性放荡片| 久久久久久久网| 国产精品免费网站在线观看| 国产精品久久久久三级| 一区二区三区视频在线看| 日韩高清一级片| 成人黄色综合网站| 欧美精品1区2区3区| 国产欧美日韩综合| 性做久久久久久久久| 亚洲国产视频网站| 欧美福利一区二区| 亚洲香蕉伊在人在线观| 黑人巨大精品欧美一区| 欧美疯狂性受xxxxx喷水图片| 91亚洲精品久久久蜜桃| 欧美精品久久一区| 国产精品日日摸夜夜摸av| 丝袜国产日韩另类美女| 粉嫩绯色av一区二区在线观看| 欧美视频中文字幕| 国产精品久久久一本精品| 免费看欧美女人艹b| 在线免费视频一区二区| 亚洲国产高清不卡| 精品一区二区三区在线播放视频| 日本福利一区二区| 国产精品久久99| 国产一区二区三区四区五区美女| 大白屁股一区二区视频| 中文乱码免费一区二区| 青娱乐精品在线视频| 制服视频三区第一页精品| 国内不卡的二区三区中文字幕 | 韩国成人在线视频| 欧美高清激情brazzers| 亚洲精品老司机| 风间由美性色一区二区三区| 欧美精品一二三区| 久久久久久久久一| 日韩av高清在线观看| 91丝袜呻吟高潮美腿白嫩在线观看| 精品国产乱码91久久久久久网站| 一区二区三区四区蜜桃| 高清不卡一二三区| 精品欧美一区二区在线观看| 亚洲一级片在线观看| 一道本成人在线| 久久夜色精品国产噜噜av| 亚洲国产日韩一区二区| www.成人网.com| 51久久夜色精品国产麻豆| 亚洲国产日韩a在线播放性色| 国产99久久精品| 精品一区二区三区免费观看 | 性做久久久久久久久| 欧美电影精品一区二区| 中文字幕亚洲电影| 国产一区二区毛片| 欧美不卡一区二区三区四区| 亚洲大尺度视频在线观看| 欧美日韩一区精品| 亚洲精品国产成人久久av盗摄| 成人午夜免费视频| 中文字幕精品一区二区三区精品| 亚洲第一综合色| 日韩一区二区中文字幕| 亚洲国产aⅴ成人精品无吗| 色狠狠综合天天综合综合| 中文字幕一区二区在线观看| 激情综合网天天干| 国产欧美一区二区精品秋霞影院| 精品在线播放午夜| 精品乱人伦一区二区三区| 日本大胆欧美人术艺术动态| 欧美私模裸体表演在线观看| 天天色天天操综合| 欧美一卡二卡三卡| 久久精品国产一区二区三| 欧美电影免费观看高清完整版| 国产一区二区三区电影在线观看 | 久久先锋影音av鲁色资源| 国产乱理伦片在线观看夜一区| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 精品国产一区二区精华| 国产一区激情在线| 中文av一区二区| 白白色 亚洲乱淫| 亚洲美女屁股眼交| 欧美日韩免费在线视频| 日本在线不卡视频| 精品国产一区二区精华| 成人性生交大合| 精品日韩欧美一区二区| 97精品超碰一区二区三区| 亚洲综合久久av| 3atv在线一区二区三区| 蜜臀av一区二区在线免费观看| 中文在线一区二区| 在线国产亚洲欧美| 免费欧美日韩国产三级电影| 久久久精品国产免费观看同学| 国内成人免费视频| 一区二区在线观看不卡| 337p亚洲精品色噜噜噜| 国产成人一级电影| 又紧又大又爽精品一区二区| 久久影院午夜论| 91美女精品福利| 久久疯狂做爰流白浆xx| 国产精品三级视频| 91精品国产综合久久久久| 国产a区久久久| 亚洲国产美女搞黄色| 久久久久成人黄色影片| 在线成人小视频| 成人黄色av电影| 日本不卡1234视频|