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

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

?? netmon.c

?? 嵌入式TCPIP協議棧的源代碼!
?? C
字號:
/* Simple network monitor 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 23/3/00
** v0.02 JPB 24/3/00 Fixed interference problem with multiple SLIP channels
** v0.03 JPB 27/3/00 Added ASCII TCP display
** v0.04 JPB 3/7/00   Changed default config file to TCPLEAN.CFG
**                    Revised header for book CD
*/

#define VERSION "0.04"

#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <signal.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 MAXASCII    70              /* Max num of ASCII chars to be displayed */

extern int netdebug;                /* Flag to enable net packet display */
extern int tcpdebug;                /* TCP frame display */
extern int promisc;                 /* Flag to enable'promiscous' net driver */
int breakflag;                      /* Flag to indicate ctrl-break pressed */

GENFRAME genframe;
char cfgfile[MAXPATH+5]=CFGFILE;    /* Config filename */
char netcfg[MAXNETCFG+1]="??";      /* Network config string */

WORD dtypes[MAXNETS];               /* Driver types for each network */
int nnets;                          /* Number of nets in use */

WORD read_netconfig_n(char *fname, int n);
void do_receive(void);
void do_poll(void);
void break_handler(int sig);
void disp_usage(void);

int main(int argc, char *argv[])
{
    int n, args=0, err=0;
    char *p;
    WORD dt;

    printf("NETMON v" VERSION "\n");            /* Sign on */
    signal(SIGINT, break_handler);              /* Trap ctrl-C */
    promisc = 1;                                /* Promiscuous mode! */
    while (argc > ++args)                       /* Process command-line args */
    {
        if (argv[args][0]=='-')
        {
            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 '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;
            }
        }
    }
    if (err)                                    /* Erorr: display usage */
    {
        disp_usage();
        exit(1);
    }
    while (nnets<MAXNETS &&                     /* Load net drivers */
           (dt=read_netconfig_n(cfgfile, nnets))!=0)
    {
        dtypes[nnets++] = dt;                   /* Save driver type */
        printf ("Net %u ", nnets);
        if (dt & DTYPE_ETHER)
            printf("Ethernet\n");
        else
            printf("SLIP\n");
    }
    if (nnets > 0)
    {
        printf("Press ESC or ctrl-C to exit\n");
        while (!breakflag)                      /* Main loop.. */
        {
            do_receive();                       /* ..handle Rx packets */
            do_poll();                          /* ..keep net drivers alive */
            if (kbhit())                        /* If key hit, check for ESC */
                breakflag = getch()==0x1b;
        }
        for (n=0; n<nnets; n++)
            close_net(dtypes[n]);               /* Shut down net drivers */
    }
    return(0);
}

/* Read nth network config item (n=0 for first) to get IP addresses and netmasks
** Return driver type, 0 if error */
WORD read_netconfig_n(char *fname, int n)
{
    WORD dtype=0;

    if (read_cfgstr_n(fname, n, "net", netcfg, MAXNETCFG))
    {
        if (!(dtype = open_net(netcfg)))        /* Open net driver */
            printf("Can't open net %u driver '%s'\n", n, netcfg);
    }
    return(dtype);
}

/* Check for incoming packets, send response if required */
void do_receive(void)
{
    int rxlen, oset, dlen, i;
    char c;
    GENFRAME *gfp;
    IPKT *ip;
    TCPKT *tcp;

    gfp = &genframe;
    gfp->g.dtype = 0;                           /* Has any net driver.. */
    if ((rxlen=get_frame(gfp)) > 0)             /* Any incoming frames? */
    {
        ip = getframe_datap(gfp);
        if (is_arp(gfp, rxlen))                     /* ARP? */
        {
        }
        else if ((rxlen=is_ip(gfp, rxlen))!=0)      /* IP datagram? */
        {
            if (is_icmp(ip, rxlen))                 /* ICMP? */
            {
            }
            else if ((dlen=is_tcp(ip, rxlen)) > 0)  /* TCP? */
            {
                tcp = getframe_datap(gfp);
                oset = gettcp_opt(tcp, 0);
                dlen = maxi(dlen, 0);
                dlen = mini(dlen, MAXASCII);
                for (i=0; i<dlen; i++)
                {
                    c = tcp->data[oset++];
                    if (c >= ' ' && c<0x7e)
                        putchar(c);
                    else if (c=='\r' || c=='\n')
                    {
                        putchar('\\');
                        putchar(c=='\r' ? 'r' : c=='\n' ? 'n' : '?');
                    }
                    else
                        putchar(' ');
                }
                putchar('\n');
            }
        }
    }
}

/* Poll the network interface to keep it alive */
void do_poll(void)
{
    int n;

    for (n=0; n<nnets; n++)
        poll_net(dtypes[n]);
}

/* Display usage help */
void disp_usage(void)
{
    printf("Usage:    NETMON [options]\n");
    printf("Options:  -c name   Config filename (default %s)\n", cfgfile);
    printf("          -t        TCP segment display\n");
    printf("          -v        Verbose packet display\n");
    printf("          -x        Hexadecimal data display\n");
    printf("Example:  NETMON -c test.cfg\n");
}

/* Ctrl-break handler: set flag and return */
void break_handler(int sig)
{
    breakflag = sig;
}

/* EOF */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲色图欧洲色图| 久久精品一二三| 成人激情图片网| 国产成人精品www牛牛影视| 蜜桃一区二区三区在线| 美女视频黄久久| 美女网站色91| 国内国产精品久久| 国产一区二区看久久| 久久狠狠亚洲综合| 国产高清在线精品| 成人免费毛片app| 91丨porny丨户外露出| 91丝袜国产在线播放| 色妹子一区二区| 欧美色精品天天在线观看视频| 91美女福利视频| 欧美探花视频资源| 日韩一区二区免费在线电影| 精品久久久久久久久久久久久久久| 精品日本一线二线三线不卡| 国产日韩精品视频一区| 国产精品剧情在线亚洲| 一区二区三区日韩欧美| 亚洲va欧美va天堂v国产综合| 婷婷综合在线观看| 国产自产v一区二区三区c| 成人动漫精品一区二区| 欧美色男人天堂| 精品国产乱码久久久久久图片 | 91精品国产综合久久久久久久| 4438成人网| 中文在线一区二区| 亚洲第一电影网| 国产一区美女在线| 日本丰满少妇一区二区三区| 欧美一二三四在线| 亚洲欧美综合色| 奇米影视在线99精品| 成人免费视频网站在线观看| 欧美日韩一区二区三区在线| 久久免费国产精品| 偷拍自拍另类欧美| aaa国产一区| 久久这里只有精品6| 一区二区三区不卡视频在线观看| 奇米777欧美一区二区| 91免费在线看| 久久久久久日产精品| 亚洲午夜久久久久久久久久久| 国产成人精品免费| 欧美一区二区在线观看| ...av二区三区久久精品| 免费欧美在线视频| 欧美三级日韩三级| 亚洲色欲色欲www| 国产乱一区二区| 欧美一级夜夜爽| 亚洲6080在线| 色婷婷亚洲精品| 中文字幕一区二区在线播放| 国产真实精品久久二三区| 欧美日韩国产美| 亚洲一区二区av在线| 99久久精品免费看国产免费软件| 精品国产第一区二区三区观看体验| 亚洲香肠在线观看| 91成人在线免费观看| 亚洲视频在线一区观看| caoporm超碰国产精品| 久久嫩草精品久久久精品| 久久99精品视频| 日韩欧美国产综合一区| 蜜桃av一区二区在线观看| 91精品在线观看入口| 婷婷成人激情在线网| 欧美日韩aaaaaa| 亚洲成年人网站在线观看| 91国偷自产一区二区使用方法| 亚洲人成网站影音先锋播放| 成人动漫在线一区| 自拍偷拍国产亚洲| 91国产精品成人| 亚洲午夜久久久久久久久电影院| 欧美熟乱第一页| 午夜伊人狠狠久久| 日韩欧美在线123| 精品中文字幕一区二区| 26uuu亚洲| 福利电影一区二区三区| 国产精品久久久99| 色综合天天视频在线观看| 亚洲在线免费播放| 欧美一区二区三区四区五区| 久色婷婷小香蕉久久| 久久久国产午夜精品| 99re这里都是精品| 亚洲自拍与偷拍| 日韩欧美一区二区在线视频| 激情国产一区二区| 1000精品久久久久久久久| 欧美日韩另类国产亚洲欧美一级| 日本不卡123| 国产欧美精品一区二区三区四区| 成人的网站免费观看| 亚洲国产日韩av| 日韩美一区二区三区| 99久久国产免费看| 日本不卡一二三| 国产精品视频九色porn| 欧洲视频一区二区| 激情欧美日韩一区二区| 亚洲日本韩国一区| 日韩美一区二区三区| 色综合中文字幕国产 | 国产亚洲欧美日韩在线一区| 91香蕉视频黄| 五月天婷婷综合| 国产亚洲一二三区| 欧美日韩久久久| 国产成人免费高清| 偷拍亚洲欧洲综合| 国产精品电影一区二区三区| 91精品国产入口| av在线一区二区| 美国精品在线观看| 一区二区视频在线| 国产日韩欧美麻豆| 在线播放亚洲一区| 成+人+亚洲+综合天堂| 美女一区二区视频| 亚洲精品国久久99热| 国产清纯白嫩初高生在线观看91| 欧美精品tushy高清| av电影一区二区| 国产精品18久久久久| 香蕉久久夜色精品国产使用方法| 中文字幕一区二区在线播放| 欧美精品一区二区三区在线播放 | 欧美日韩亚洲不卡| 97精品国产露脸对白| 国产精品一区一区三区| 日韩电影在线免费看| 午夜精品福利久久久| 亚洲欧美成人一区二区三区| 中文字幕电影一区| 久久久久99精品一区| 精品久久久久久久一区二区蜜臀| 欧美日本在线播放| 欧美丝袜丝交足nylons图片| 色婷婷综合五月| 色婷婷综合五月| 一本大道久久a久久精二百 | 国产 欧美在线| 蓝色福利精品导航| 麻豆成人久久精品二区三区红| 亚洲成a天堂v人片| 视频一区视频二区在线观看| 亚洲高清视频在线| 日日摸夜夜添夜夜添精品视频 | 麻豆成人久久精品二区三区红| 五月婷婷欧美视频| 免费欧美高清视频| 久久精品国产久精国产| 久久91精品久久久久久秒播| 久久99精品国产.久久久久 | 中文字幕一区在线观看| 国产精品福利在线播放| 亚洲欧洲av色图| 亚洲午夜久久久| 男人的j进女人的j一区| 另类成人小视频在线| 国产乱码精品1区2区3区| 岛国av在线一区| 色天天综合久久久久综合片| 欧美日韩精品一区二区三区四区 | 欧美mv日韩mv国产| 国产亚洲成av人在线观看导航| 国产精品国产三级国产aⅴ原创 | 午夜欧美一区二区三区在线播放| 午夜精品久久久久久久99樱桃| 久久精品理论片| aa级大片欧美| 欧美乱妇20p| 欧美国产日韩a欧美在线观看 | 欧美在线观看一二区| 欧美精品v日韩精品v韩国精品v| 精品国产欧美一区二区| 国产精品白丝在线| 91网站黄www| 欧美精三区欧美精三区| 精品99999| 一个色综合av| 乱一区二区av| 色婷婷国产精品| 337p粉嫩大胆色噜噜噜噜亚洲| 亚洲女性喷水在线观看一区| 日日摸夜夜添夜夜添精品视频 | 不卡一区二区在线| 91精品国产综合久久蜜臀|