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

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

?? scratchp.c

?? 嵌入式小型TCPIP協議棧
?? C
?? 第 1 頁 / 共 3 頁
字號:
                }
                else
                {
                    printf("\nEcho response incorrect!\n");
                    connsig = SIG_STOP;     /* If error, close connection */
                }
            }
        }
    }
    else if (appstate == APP_ECHO_SERVER)   /* If I'm an echo server.. */
    {
        if (usersig == SIG_USER_CLOSE)      /* User closing connection? */
            newappstate(APP_IDLE);
        else if ((len = minw(buff_freelen(txb), TESTLEN))>0 &&
                 (len = buff_out(rxb, apptemp, len)) > 0)
            buff_in(txb, apptemp, len);     /* Else copy I/P data to O/P */
    }
    else if (appstate == APP_FILE_RECEIVER) /* If I'm receiving a file.. */
    {
        while (buff_try(rxb, &lenb, 1))     /* Get length byte */
        {                                   /* If rest of block absent.. */
            if (buff_untriedlen(rxb) < lenb)
            {
                buff_retry(rxb, 1);         /* .. push length byte back */
                break;
            }
            else
            {
                filelen += lenb;
                buff_out(rxb, 0, 1);        /* Check length */
                if (lenb == 0)              /* If null, end of file */
                {
                    if (!fhandle || ferror(fhandle))
                        printf("ERROR writing file\n");
                    fclose(fhandle);
                    fhandle = 0;
                    newappstate(APP_IDLE);
                }
                else                        /* If not null, get block */
                {
                    buff_out(rxb, apptemp, (WORD)lenb);
                    if (fhandle)
                        fwrite(apptemp, 1, lenb, fhandle);
                }
            }
        }
    }
    else if (appstate == APP_FILE_SENDER)   /* If I'm sending a file.. */
    {                                       /* While room for another block.. */
        while (fhandle && buff_freelen(txb)>=BLOCKLEN+2)
        {                                   /* Get block from disk */
            lenb = (BYTE)fread(apptemp, 1, BLOCKLEN, fhandle);
            filelen += lenb;
            buff_in(txb, &lenb, 1);         /* Send length byte */
            buff_in(txb, apptemp, lenb);    /* ..and data */
            if (lenb < BLOCKLEN)            /* If end of file.. */
            {                               /* ..send null length */
                buff_in(txb, (BYTE *)"\0", 1);
                fclose(fhandle);
                fhandle = 0;
                newappstate(APP_IDLE);
            }
        }
    }
    return(connsig);
}

/* Do a directory of files, putting 1 name per line into O/P buffer
** Return number of files */
int do_dir(CBUFF *txb)
{
    int done=0, count=0;

#ifndef WIN32
    struct ffblk ffb;

    done = findfirst("*.*", &ffb, 0);
    while (!done)
    {
        count++;
        buff_instr(txb, ffb.ff_name);
        buff_instr(txb, "\r\n");
        done = findnext(&ffb);
    }
#else
    long h;
    struct _finddata_t fd;

    h = _findfirst("*.*", &fd);
    while (h!=-1L && !done)
    {
        count++;
        buff_instr(txb, fd.name);
        buff_instr(txb, "\r\n");
        done = _findnext(h, &fd);
    }
    _findclose(h);
#endif
    return(count);
}

/* Do a connection state transition, refresh timer, do diagnostic printout */
void newconnstate(int state)
{
    if (state!=connstate)
    {
        if (statedebug)
            printf("connstate %s\n", connstates[state]);
        if (state != STATE_CONNECTED)
            newappstate(APP_IDLE);          /* If not connected, stop app. */
    }
    connstate = state;
    errcount = 0;
    timeout(&errtimer, 0);                  /* Refresh timeout timer */
}

/* Do an application state transition, do diagnostic printout */
void newappstate(int state)
{
    if (statedebug && state!=appstate)
        printf("appstate %s\n", appstates[state]);
    appstate = state;
    errcount = 0;
    timeout(&errtimer, 0);                  /* Refresh timeout timer */
}

/* Display a signal name */
void disp_sig(int sig)
{
    printf("%s ", signames[sig]);
}

/* Make a SCRATCHP packet given command, flags and string data */
int make_scratchpds(GENFRAME *nfp, BYTE *dest, char *cmd, BYTE flags, char *str)
{
    return(make_scratchp(nfp, dest, cmd, flags, str, strlen(str)+1));
}

/* Make a SCRATCHP packet given command, flags and data */
int make_scratchp(GENFRAME *nfp, BYTE *dest, char *cmd, BYTE flags,
                  void *data, int dlen)
{
    SCRATCHPKT *sp;
    ETHERHDR *ehp;
    int cmdlen=0;

    sp = (SCRATCHPKT *)getframe_datap(&genframe);
    sp->h.ver = SCRATCHPVER;                /* Fill in the blanks.. */
    sp->h.flags = flags;
    sp->h.seq = txbuff.trial;               /* Direct seq/ack mapping.. */
    sp->h.ack = rxbuff.in;                  /* ..to my circ buffer pointers! */
    if (cmd)
    {
        strcpy((char *)sp->data, cmd);      /* Copy command string */
        cmdlen = strlen(cmd) + 1;
    }
    sp->h.dlen = cmdlen + dlen;             /* Add command to data length */
    if (dlen && data)                       /* Copy data */
        memcpy(&sp->data[cmdlen], data, dlen);
    if (nfp->g.dtype & DTYPE_ETHER)
    {
        ehp = (ETHERHDR *)nfp->buff;
        ehp->ptype = PCOL_SCRATCHP;         /* Fill in more blanks */
        memcpy(ehp->dest, dest, MACLEN);
    }
    diaghdrs[diagidx] = sp->h;              /* Copy hdr into diagnostic log */
    diaghdrs[diagidx].ver = DIAG_TX;
    diagidx = (diagidx + 1) % NDIAGS;
    return(sp->h.dlen+sizeof(SCRATCHPHDR)); /* Return length incl header */
}

/* Transmit a SCRATCHP packet. given length incl. SCRATCHP header */
int put_scratchp(GENFRAME *nfp, WORD txlen)
{
    int len=0;

    if (txlen >= sizeof(SCRATCHPHDR))       /* Check for min length */
    {
        if (pktdebug)
        {
            printf ("Tx ");
            disp_scratchp(nfp);
            printf("   ");
        }
        swap_scratchp(nfp);                 /* Byte-swap SCRATCHP header */
        if (is_ether(nfp, txlen+sizeof(ETHERHDR)))
            txlen += sizeof(ETHERHDR);
        txcount++;
        len = put_net(nfp, txlen);          /* Transmit packet */
    }
    return(len);
}

/* Check for SCRATCHP, given frame pointer & length */
int is_scratchp(GENFRAME *nfp, int len)
{
    WORD pcol;
                                            /* SLIP has no protocol field.. */
    pcol = getframe_pcol(nfp);              /* ..so assume 0 value is correct */
    return((pcol==0 || pcol==PCOL_SCRATCHP) && len>=sizeof(SCRATCHPHDR));
}

/* Byte-swap an SCRATCHP packet, return header length */
int swap_scratchp(GENFRAME *nfp)
{
    SCRATCHPKT *sp;

    sp = getframe_datap(nfp);
    sp->h.dlen = swapw(sp->h.dlen);
    sp->h.seq = swapl(sp->h.seq);
    sp->h.ack = swapl(sp->h.ack);
    return(sizeof(SCRATCHPHDR));
}

/* Display SCRATCHP packet */
void disp_scratchp(GENFRAME *nfp)
{
    printf("SCRATCHP ");
    disp_scratchphdr(getframe_datap(nfp));
    printf("\n");
}

/* Display SCRATCHP header */
void disp_scratchphdr(SCRATCHPHDR *sph)
{
    printf("F %02X S %04X A %04X Dlen %4Xh ",
           sph->flags, (WORD)sph->seq, (WORD)sph->ack, sph->dlen);
}

/* Dump out the diagnostic headers */
void dump_diags(void)
{
    SCRATCHPHDR *sph;
    int i, lastype;
    LWORD rxack=0, unacked, percent, txack=0;

    for (i=lastype=0; i<NDIAGS; i++)
    {
        sph = &diaghdrs[diagidx];
        diagidx = (diagidx + 1) % NDIAGS;
        if (sph->ver == DIAG_TX)            /* Tx packet? */
        {
            if (lastype == DIAG_TX)
                printf("\n");
            printf("Tx: ");
            disp_scratchphdr(sph);
            txack = sph->ack;
            unacked = rxack ? sph->seq + sph->dlen - rxack : 0;
            percent = (unacked * 100L) / txbuff.len;
            printf("%2ld%%", percent);
        }
        else if (sph->ver == DIAG_RX)       /* Rx packet? */
        {
            if (lastype != DIAG_TX)
                printf("                                     ");
            printf(" Rx: ");
            disp_scratchphdr(sph);
            rxack = sph->ack;
            unacked = txack ? sph->seq + sph->dlen - txack : 0;
            percent = (unacked * 100L) / rxbuff.len;
            printf("%2ld%%\n", percent);
        }
        lastype = sph->ver ? sph->ver : lastype;
    }
    if (lastype == DIAG_TX)
        printf("\n");
}

/* Read the config file into global storage */
int read_cfg(char *fname)
{
    int ok;

    if (fname)
    {
        strncpy(cfgfile, fname, MAXPATH);
        cfgfile[MAXPATH] = 0;
        strlwr(cfgfile);
        if (!strchr(cfgfile, '.'))
            strcat(cfgfile, ".cfg");
    }
    printf("Reading '%s'\n", cfgfile);
    ok = read_cfgstr(cfgfile, "net", netcfg, sizeof(netcfg)-1);
    if (ok)
    {
        printf("\nNet:    %s\n", netcfg);
        ok += read_cfgstr(cfgfile, "id", locid, IDLEN-1);
        printf("Ident:  %s\n", locid);
    }
    return(ok);
}

/* A rewrite of 'gets' to provide a max text length, and allow user to escape
** Returns length of string obtained */
int mygets(char *buff, int maxlen)
{
    char c=0;
    int n=0;

    do 
    {
        c = getch();
        if (c=='\b' && n>0)
        {
            putch('\b');
            putch(' ');
            putch('\b');
            n--;
        }
        else if (c == 0x1b)
        {
            n = 0;
            break;
        }
        else if (c>=' ' && n<maxlen)
        {
            putch(c);
            buff[n++] = c;
        }
        buff[n] = 0;
    } while (c != '\r');
    printf("\n");
    return(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一区二区三区免费野_久草精品视频
日韩情涩欧美日韩视频| 欧美日韩一区成人| 欧美视频精品在线观看| 久久奇米777| 亚洲一区视频在线观看视频| 韩国三级电影一区二区| 欧美精品久久一区| 国产精品九色蝌蚪自拍| 精品一区二区日韩| 欧美日本在线观看| 亚洲最快最全在线视频| 丁香亚洲综合激情啪啪综合| 日韩一区二区三区av| 亚洲一区二区三区小说| 99精品视频一区二区三区| 欧美精品一区男女天堂| 日韩主播视频在线| 欧美亚洲动漫另类| 亚洲欧美日韩成人高清在线一区| 国产久卡久卡久卡久卡视频精品| 欧美一区中文字幕| 亚洲一区二区在线观看视频| 91丨porny丨户外露出| 国产视频一区不卡| 国产九色sp调教91| 国产日韩欧美精品电影三级在线| 激情综合色综合久久| 日韩三级伦理片妻子的秘密按摩| 亚洲成av人影院| 欧美午夜不卡在线观看免费| 伊人性伊人情综合网| 色综合天天狠狠| 亚洲精品少妇30p| 一本色道亚洲精品aⅴ| 一区二区三区在线视频播放| 在线免费观看日韩欧美| 亚洲综合成人网| 欧美日韩色综合| 日韩va亚洲va欧美va久久| 在线不卡的av| 蜜臀久久99精品久久久画质超高清| 欧美精品久久99| 奇米一区二区三区| 日韩精品综合一本久道在线视频| 久久精品国产一区二区| 久久这里只精品最新地址| 国产乱码精品一品二品| 国产精品久久久久久久久果冻传媒| 成人免费不卡视频| 综合电影一区二区三区| 一本到不卡精品视频在线观看| 亚洲电影激情视频网站| 欧美电影免费观看高清完整版 | 激情小说亚洲一区| 精品第一国产综合精品aⅴ| 国产精品资源站在线| 国产精品久久一卡二卡| 91国产精品成人| 久久国产人妖系列| 欧美国产精品专区| 欧美午夜影院一区| 久久精品国产99久久6| 欧美国产一区二区在线观看| 欧美午夜精品久久久| 精品一区精品二区高清| 亚洲区小说区图片区qvod| 在线播放亚洲一区| 国产+成+人+亚洲欧洲自线| 亚洲一二三四区不卡| 精品福利av导航| 色视频欧美一区二区三区| 蜜桃91丨九色丨蝌蚪91桃色| 国产精品久久99| 4438x成人网最大色成网站| 国产黄色91视频| 天天综合天天做天天综合| 久久久精品tv| 欧美色电影在线| 国产成人精品aa毛片| 五月天国产精品| 成人欧美一区二区三区黑人麻豆 | 欧美高清激情brazzers| 成人在线视频一区二区| 污片在线观看一区二区| 国产精品女同互慰在线看| 欧美一区二区私人影院日本| 99久久精品情趣| 国产老肥熟一区二区三区| 亚洲成av人**亚洲成av**| 国产精品乱码妇女bbbb| 精品美女一区二区| 欧美日韩免费在线视频| 99久久精品国产网站| 国产一区二区免费看| 日本视频中文字幕一区二区三区| 最新不卡av在线| 中文字幕精品一区二区三区精品| 日韩一区二区三区四区| 欧美在线|欧美| 91在线视频18| caoporn国产精品| 国产寡妇亲子伦一区二区| 免费xxxx性欧美18vr| 亚洲高清视频中文字幕| 亚洲免费观看高清在线观看| 国产欧美精品一区二区色综合朱莉| 91精品国产一区二区人妖| 欧美精品丝袜中出| 欧美日韩在线观看一区二区 | 国产精品一卡二卡| 国产精品夜夜爽| 国产精品一线二线三线| 国产一区二区三区在线观看免费视频 | 色综合色综合色综合| 国产成人精品三级| 国产一区二区三区久久久| 玖玖九九国产精品| 日韩和欧美的一区| 秋霞电影网一区二区| 麻豆视频一区二区| 樱桃国产成人精品视频| 亚洲一区二区不卡免费| 天堂av在线一区| 日韩影院在线观看| 另类成人小视频在线| 国产乱子伦视频一区二区三区| 国产盗摄视频一区二区三区| 国产成人午夜视频| www.视频一区| 在线免费观看日本欧美| 欧美精品 日韩| 2021中文字幕一区亚洲| 国产日产欧美一区二区视频| 中文字幕一区二区三区四区不卡 | 91在线观看成人| 在线精品视频一区二区| 欧美一级日韩免费不卡| xnxx国产精品| 成人免费在线视频| 视频一区二区三区在线| 国产在线精品免费| 91在线观看地址| 91精品国产aⅴ一区二区| 国产亚洲美州欧州综合国| 亚洲视频一区二区在线| 日韩精品亚洲专区| 国产成人精品午夜视频免费| 色就色 综合激情| 日韩欧美国产一二三区| 国产精品理论在线观看| 午夜精品福利久久久| 国产精品中文字幕欧美| 91久久精品午夜一区二区| 欧美成人女星排行榜| 亚洲欧洲日产国码二区| 日韩不卡在线观看日韩不卡视频| 国产a区久久久| 91精品国产免费久久综合| 中文一区二区完整视频在线观看| 亚洲成av人片一区二区梦乃| 成人午夜视频福利| 欧美伊人久久久久久午夜久久久久| 精品国产一区二区三区久久影院 | 极品少妇一区二区三区精品视频| a亚洲天堂av| 精品久久久久久综合日本欧美| 中文字幕亚洲成人| 石原莉奈在线亚洲二区| 91在线观看高清| 久久久久亚洲综合| 亚洲成av人片在线观看无码| 99精品国产一区二区三区不卡| 26uuu成人网一区二区三区| 亚洲成人一区在线| 色婷婷久久久综合中文字幕| 久久天堂av综合合色蜜桃网| 午夜视频一区二区| 91日韩在线专区| 国产精品免费视频网站| 国内精品写真在线观看| 91 com成人网| 琪琪一区二区三区| 色婷婷国产精品综合在线观看| 国产免费成人在线视频| 另类调教123区| 91精品婷婷国产综合久久竹菊| 依依成人综合视频| 色综合久久天天综合网| 国产精品国产自产拍在线| 国产在线视视频有精品| 日韩一区二区三区电影在线观看| 亚洲成av人综合在线观看| 欧美视频日韩视频| 亚洲一区二区三区四区的| 一区二区三区欧美日| 亚洲精品国产无天堂网2021| 精品少妇一区二区三区视频免付费 | 亚洲高清不卡在线| 成人一区在线观看| 久久―日本道色综合久久|