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

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

?? qserve.c

?? 實戰的linux socket編程--示例源碼
?? C
字號:
/* qserve.c : * * Stock Quote Concentrator Program : */#include "quotes.h"static char *command = NULL;/* Remote Quote Server Address */static char *cmdopt_a = DFLT_SERVER;/* Quote Re-Broadcast Address */static char *cmdopt_b = DFLT_BCAST;/* * Ticker Table : */static TickReq tickers[MAX_TICKERS];static int ntick = 0;/* * Return server usage information : */static voidusage(void) {    printf("Usage: %s [-h] [-a address:port]\n"        "where:\n"        "\t-h\t\tRequests usage info.\n"        "\t-a address:port\tSpecify "        "the server\n"        "\t\t\taddress and port number.\n"        "\t-b bcast:port\tSpecify "        "the broadcast\n"        "\t\t\taddress and port number.\n",        command);}/* * Server Main Program : */intmain(int argc,char **argv) {    int rc = 0;             /* Return Code */    int optch;             /* Option Char. */    int z;                  /* Status Code */    int x;                        /* Index */    int s;             /* Broadcast socket */    time_t tn = 0;            /* Time Next */    time_t zzz;              /* Sleep Time */    time_t tm = 20;             /* Seconds */    time_t td;              /* Time & Date */    struct sockaddr_in bc_addr; /* bc addr */    socklen_t bc_len;      /* bc addr len. */    const int True = TRUE;  /* Const. TRUE */    static char cmdopts[] = "ha:b:";    /*     * Process command line options :     */    command = Basename(argv[0]);    while ( (optch = getopt(argc,argv,cmdopts)) != -1 )        switch ( optch ) {        case 'h' :          /* -h for help */            usage();            return rc;        case 'a' :      /* -a quote_server */            cmdopt_a = optarg;            break;        case 'b' :    /* -b broadcast_addr */            cmdopt_b = optarg;            break;        default :            /* Option error */            rc = 1;    }    /*     * Check for option errors :     */    if ( rc ) {        usage();        return rc;    }            /*     * Form the broadcast server     * address:     */    bc_len = sizeof bc_addr;    /* Max len */    z = mkaddr(        &bc_addr,        /* Returned addr. */        &bc_len,          /* Returned len. */        cmdopt_b,         /* Input address */        "udp");            /* UDP protocol */    if ( z == -1 ) {        msgf('e',"%s: -b %s",            strerror(errno),            cmdopt_b);        return 1;    }    /*     * Create a UDP socket to use :     */    s = socket(PF_INET,SOCK_DGRAM,0);    if ( s == -1 ) {        msgf('e',"%s: socket(PF_INET,"            "SOCK_DGRAM,0)",            strerror(errno));        return 1;    }    /*     * Allow broadcasts on socket s :     */    z = setsockopt(s,        SOL_SOCKET,        SO_BROADCAST,        &True,        sizeof True);    if ( z == -1 ) {        msgf('e',"%s: setsockopt(SO_BROADCAST)",            strerror(errno));        return 1;    }    /*     * Load tickers from tickers.rc :     */    if ( load(&tickers[0],&ntick,MAX_TICKERS) )        goto errxit;    /*     * Now monitor the remote quote server :     */    for (;;) {        tn = 0;              /* Refresh tn */        time(&td);         /* Current time */        /*         * Loop for all tickers :         */        for ( x=0; x<ntick; ++x ) {            /*             * Skip tickers that are either             * unknown, or are producing parse             * errors in the returned data :             */            if ( tickers[x].flags & FLG_UNKNOWN              || tickers[x].flags & FLG_ERROR )                continue;   /* Ignore this */            /*             * Pick up the earliest "next" time:             */            if ( !tn              || tickers[x].next_samp < tn )                tn = tickers[x].next_samp;            /*             * If the current time is > than             * the "next" time, it is time to             * fetch an update for this ticker:             */            if ( td >= tickers[x].next_samp ) {                /*                 * Get Quote Update :                 */                z = get_tickinfo(                    &tickers[x],cmdopt_a);                /*                 * Compute time for the next                 * update for this ticker :                 */                time(&tickers[x].next_samp);                tickers[x].next_samp += tm;                /*                 * If the quote fetch was OK,                 * then broadcast its info :                 */                if ( !z )                    broadcast(s,&tickers[x],                        (struct sockaddr *)&bc_addr,                        bc_len);            }        }        /*         * Here the interval between updates is         * progressively increased to 5 minutes         * max. This provides a lot of initial         * action for demonstration purposes,         * without taxing the friendly quote         * providers if this program is run all         * day. Abuse will only force the kind         * providers to change things to break         * the operation of this program!         */        if ( tm < (time_t) 5 * 60 )            tm += 5;    /* Progressively increase */        /*         * Compute how long we need to snooze.         * The time to the next event is         * computed- sleep(3) is called if         * necessary:         */        if ( !tn )            tn = td + tm;        if ( tn >= td )            if ( (zzz = tn - td) )                sleep(zzz);    }    return rc;    /*     * Error Exit :     */errxit:    return rc = 2;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
7777精品伊人久久久大香线蕉| 日本伦理一区二区| 欧美在线视频全部完| 一区二区三区在线观看动漫| 在线免费观看视频一区| 99re热这里只有精品免费视频| 亚洲视频免费在线| 日韩一区二区精品在线观看| 另类的小说在线视频另类成人小视频在线 | 777久久久精品| 555夜色666亚洲国产免| 91精品国产综合久久福利| 国产精品99久久久久久宅男| 亚洲欧美日本韩国| 国产亚洲欧美一区在线观看| 欧美综合天天夜夜久久| 欧美视频中文一区二区三区在线观看| 精品一区二区日韩| 午夜久久电影网| 久久精品夜色噜噜亚洲a∨| 国产性天天综合网| 一区二区三区在线视频播放| 午夜精品福利一区二区三区av | 久久网这里都是精品| 色综合视频在线观看| 狠狠色丁香九九婷婷综合五月| 一区二区三区资源| 日韩**一区毛片| 亚洲乱码国产乱码精品精可以看| 久久精品视频在线免费观看| 国产精品久久久久久久久久久免费看| 91精品国产综合久久久久久久久久| 精品嫩草影院久久| 欧美成人免费网站| 亚洲色图欧美偷拍| 久久精品72免费观看| 91美女精品福利| 成人免费视频一区二区| 免费在线观看成人| 日韩黄色片在线观看| 五月天激情综合网| av爱爱亚洲一区| 色婷婷国产精品久久包臀| 日韩色视频在线观看| 亚洲男人的天堂在线aⅴ视频| 免费黄网站欧美| 色婷婷综合久久久中文字幕| 2020日本不卡一区二区视频| 亚洲成人av免费| 丝袜亚洲另类欧美| 色综合网站在线| 色婷婷综合视频在线观看| 久久―日本道色综合久久| 精品国产一区二区三区av性色| 精品欧美一区二区三区精品久久| 一区二区三区中文字幕在线观看| 成人一级黄色片| 欧美xxxxxxxx| 伦理电影国产精品| 欧美一个色资源| 亚洲高清三级视频| 九色综合国产一区二区三区| 欧美人动与zoxxxx乱| 精品久久人人做人人爽| 日韩黄色免费电影| 欧美一级高清片| 日韩av网站在线观看| 欧美高清视频在线高清观看mv色露露十八 | ww久久中文字幕| 日韩电影在线观看电影| 精品视频一区二区不卡| 精品免费国产二区三区| 秋霞午夜鲁丝一区二区老狼| 欧美日韩成人一区| 男女激情视频一区| 日韩欧美aaaaaa| 亚洲免费av在线| 99r国产精品| 一区二区三区产品免费精品久久75| 波多野结衣一区二区三区 | 亚洲国产精品久久不卡毛片| 欧美性生交片4| 亚洲电影中文字幕在线观看| 欧美日韩在线三级| 五月天丁香久久| 日韩久久久精品| 国产乱码精品一区二区三区av| 久久精品在线观看| 91污片在线观看| 香蕉av福利精品导航| 日韩一区二区三区视频在线观看| 免费不卡在线观看| 久久久不卡网国产精品二区| 大白屁股一区二区视频| 夜夜嗨av一区二区三区| 91麻豆精品国产91久久久 | 中文字幕在线不卡国产视频| 亚洲成人在线网站| 日韩片之四级片| 播五月开心婷婷综合| 精品国产3级a| 大桥未久av一区二区三区中文| 亚洲欧美另类在线| 欧美成人video| 97精品久久久午夜一区二区三区| 午夜久久久影院| 欧美高清在线一区二区| 美女性感视频久久| 在线不卡欧美精品一区二区三区| 六月婷婷色综合| 亚洲精品videosex极品| 精品人在线二区三区| 91亚洲国产成人精品一区二区三| 日韩高清国产一区在线| 国产精品系列在线| www.亚洲国产| 经典三级在线一区| 亚洲午夜电影网| 中文字幕免费一区| 精品少妇一区二区| 欧美片在线播放| 91视频观看免费| 国产精品亚洲一区二区三区妖精| 亚洲va韩国va欧美va| 中文字幕亚洲视频| 国产欧美日韩综合| 成人黄色一级视频| 麻豆成人免费电影| 日日夜夜免费精品视频| 亚洲色图.com| 国产精品久久久爽爽爽麻豆色哟哟| 日韩免费观看高清完整版 | 亚洲综合清纯丝袜自拍| 欧美久久一二三四区| 91网上在线视频| 成人免费的视频| 国产盗摄一区二区三区| 国产精品久久久久久久久快鸭| 精品久久久久99| 欧美一卡2卡三卡4卡5免费| 欧美日韩一本到| 欧洲精品中文字幕| 91国产福利在线| 91久久精品网| 在线视频国内自拍亚洲视频| 99久久777色| 不卡一卡二卡三乱码免费网站| 国产福利电影一区二区三区| 国内成人自拍视频| 九九久久精品视频| 精品亚洲国内自在自线福利| 美女网站在线免费欧美精品| 五月激情综合婷婷| 理论电影国产精品| 国产综合久久久久影院| 国产麻豆午夜三级精品| 亚洲美女视频一区| 亚洲无人区一区| 亚洲综合一区在线| 一区二区三区四区视频精品免费 | 亚洲男女一区二区三区| 日韩美女久久久| 亚洲精品成a人| 午夜一区二区三区视频| 蜜臀国产一区二区三区在线播放| 青椒成人免费视频| 国产成人午夜电影网| 99re视频精品| 国产日韩欧美精品综合| √…a在线天堂一区| 亚洲国产精品久久不卡毛片| 蜜臀精品久久久久久蜜臀| 国产在线一区二区综合免费视频| 国产在线乱码一区二区三区| 丁香一区二区三区| 日韩成人免费电影| 国产一区二区h| 一本到不卡精品视频在线观看 | 九九视频精品免费| 成人av电影免费观看| 欧美三级在线看| 久久久一区二区三区| 一区二区视频在线| 黄网站免费久久| 91精品办公室少妇高潮对白| 欧美一区二区大片| 中文字幕亚洲一区二区va在线| 日韩国产成人精品| eeuss鲁片一区二区三区在线看| 欧美日韩高清一区二区不卡| 精品国产一区二区三区不卡| 一区二区在线电影| 国产激情视频一区二区在线观看| 色婷婷av一区二区三区软件 | 中文字幕日本不卡| 久草精品在线观看| 欧美人妖巨大在线| 亚洲欧美国产77777| 国产一区二区不卡在线| 欧美精品免费视频|