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

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

?? sntpclib.c

?? vxwork源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
      sntpSocket = socket (AF_INET, SOCK_DGRAM, 0);    if (sntpSocket == -1)         return (ERROR);    /*      * Enable broadcast option for socket in case that address is given.      * This use of the SNTP client is not likely, so ignore errors. If      * the broadcast address is used, and this call fails, the error will     * be caught by sendto() below.     */    optval = 1;    result = setsockopt (sntpSocket, SOL_SOCKET, SO_BROADCAST,                          (char *)&optval, sizeof (optval));    /* Initialize SNTP message buffers. */      bzero ( (char *)&sntpRequest, sizeof (sntpRequest));    bzero ( (char *)&sntpReply, sizeof (sntpReply));      sntpRequest.leapVerMode = SNTP_CLIENT_REQUEST;      bzero ( (char *) &servAddr, sizeof (servAddr));    servAddrLen = sizeof (servAddr);      /* Transmit SNTP request. */      if (sendto (sntpSocket, (caddr_t)&sntpRequest, sizeof(sntpRequest), 0,                (struct sockaddr *)&dstAddr, sizeof (dstAddr)) == -1)         {        close (sntpSocket);        return (ERROR);        }        /* Convert timeout value to format needed by select() call. */    if (timeout != WAIT_FOREVER)        {        clockRate = sysClkRateGet ();        sockTimeout.tv_sec = timeout / clockRate;        sockTimeout.tv_usec = (1000000 * timeout % clockRate) / clockRate;        }    /* Wait for reply at the ephemeral port selected by the sendto () call. */    FD_ZERO (&readFds);    FD_SET (sntpSocket, &readFds);    if (timeout == WAIT_FOREVER)        result = select (FD_SETSIZE, &readFds, NULL, NULL, NULL);    else        result = select (FD_SETSIZE, &readFds, NULL, NULL, &sockTimeout);    if (result == -1)         {        close (sntpSocket);        return (ERROR);        }    if (result == 0)    /* Timeout interval expired. */        {        close (sntpSocket);         errnoSet (S_sntpcLib_TIMEOUT);        return (ERROR);        }    result = recvfrom (sntpSocket, (caddr_t)&sntpReply, sizeof (sntpReply),                       0, (struct sockaddr *)&servAddr, &servAddrLen);    if (result == -1)         {        close (sntpSocket);        return (ERROR);	          }    close (sntpSocket);    /*     * Return error if the server clock is unsynchronized, or the version is      * not supported.     */    if ( (sntpReply.leapVerMode & SNTP_LI_MASK) == SNTP_LI_3 ||        sntpReply.transmitTimestampSec == 0)        {        errnoSet (S_sntpcLib_SERVER_UNSYNC);        return (ERROR);        }    if ( (sntpReply.leapVerMode & SNTP_VN_MASK) == SNTP_VN_0 ||        (sntpReply.leapVerMode & SNTP_VN_MASK) > SNTP_VN_3)        {        errnoSet (S_sntpcLib_VERSION_UNSUPPORTED);	return (ERROR);        }    /* Convert the NTP timestamp to the correct format and store in clock. */    /* Add test for 2036 base value here! */    sntpReply.transmitTimestampSec = ntohl (sntpReply.transmitTimestampSec) -                                      SNTP_UNIX_OFFSET;    /*      * Adjust returned value if leap seconds are present.      * This needs work!      */     /* if ( (sntpReply.leapVerMode & SNTP_LI_MASK) == SNTP_LI_1)            sntpReply.transmitTimestampSec += 1;     else if ((sntpReply.leapVerMode & SNTP_LI_MASK) == SNTP_LI_2)              sntpReply.transmitTimestampSec -= 1;    */    sntpReply.transmitTimestampFrac = ntohl (sntpReply.transmitTimestampFrac);    pCurrTime->tv_sec = sntpReply.transmitTimestampSec;    pCurrTime->tv_nsec = sntpcFractionToNsec (sntpReply.transmitTimestampFrac);    return (OK);    }/********************************************************************************* sntpcListen - retrieve the time from an SNTP/NTP broadcast** This routine listens to the SNTP/NTP port for a valid message from any * SNTP/NTP server executing in broadcast mode, converts the returned NTP * timestamp to the POSIX-compliant clock format with the UNIX base value* (elapsed time since 00:00 GMT on January 1, 1970), and stores the result in * the location indicated by <pTime>.* * RETURNS: OK, or ERROR if unsuccessful.** ERRNO:*  S_sntpcLib_TIMEOUT** NOMANUAL*/LOCAL STATUS sntpcListen    (    u_int 		timeout,	/* timeout in ticks */    struct timespec * 	pCurrTime	/* storage for retrieved time value */    )    {    SNTP_PACKET sntpMessage;    /* buffer for message from server */    struct sockaddr_in srcAddr;    int sntpSocket;    struct timeval sockTimeout;    int clockRate;    fd_set readFds;    int result;    int srcAddrLen;     /* Initialize source address. */    bzero ( (char *)&srcAddr, sizeof (srcAddr));    srcAddr.sin_addr.s_addr = INADDR_ANY;    srcAddr.sin_family = AF_INET;    srcAddr.sin_port = sntpcPort;    /* Create socket for listening. */      sntpSocket = socket (AF_INET, SOCK_DGRAM, 0);    if (sntpSocket == -1)         return (ERROR);          result = bind (sntpSocket, (struct sockaddr *)&srcAddr, sizeof (srcAddr));    if (result == -1)         {        close (sntpSocket);        return (ERROR);        }    /* Convert timeout value to format needed by select() call. */    if (timeout != WAIT_FOREVER)        {        clockRate = sysClkRateGet ();        sockTimeout.tv_sec = timeout / clockRate;        sockTimeout.tv_usec = (1000000 * timeout % clockRate) / clockRate;        }    /* Wait for broadcast message from server. */    FD_ZERO (&readFds);    FD_SET (sntpSocket, &readFds);          if (timeout == WAIT_FOREVER)        result = select (FD_SETSIZE, &readFds, NULL, NULL, NULL);    else        result = select (FD_SETSIZE, &readFds, NULL, NULL, &sockTimeout);    if (result == -1)        {        close (sntpSocket);        errnoSet (S_sntpcLib_TIMEOUT);        return (ERROR);        }    if (result == 0)    /* Timeout interval expired. */        {        close (sntpSocket);        errnoSet (S_sntpcLib_TIMEOUT);        return (ERROR);        }    result = recvfrom (sntpSocket, (caddr_t) &sntpMessage, sizeof(sntpMessage),                       0, (struct sockaddr *) &srcAddr, &srcAddrLen);    if (result == -1)         {        close (sntpSocket);        return (ERROR);        }    close (sntpSocket);    /*     * Return error if the server clock is unsynchronized, or the version is      * not supported.     */    if ( (sntpMessage.leapVerMode & SNTP_LI_MASK) == SNTP_LI_3 ||        sntpMessage.transmitTimestampSec == 0)        {        errnoSet (S_sntpcLib_SERVER_UNSYNC);        return (ERROR);        }    if ( (sntpMessage.leapVerMode & SNTP_VN_MASK) == SNTP_VN_0 ||        (sntpMessage.leapVerMode & SNTP_VN_MASK) > SNTP_VN_3)        {        errnoSet (S_sntpcLib_VERSION_UNSUPPORTED);        return (ERROR);        }    /* Convert the NTP timestamp to the correct format and store in clock. */    /* Add test for 2036 base value here! */    sntpMessage.transmitTimestampSec =                                      ntohl (sntpMessage.transmitTimestampSec) -                                     SNTP_UNIX_OFFSET;    /*     * Adjust returned value if leap seconds are present.     * This needs work!     */    /* if ( (sntpReply.leapVerMode & SNTP_LI_MASK) == SNTP_LI_1)            sntpReply.transmitTimestampSec += 1;     else if ((sntpReply.leapVerMode & SNTP_LI_MASK) == SNTP_LI_2)              sntpReply.transmitTimestampSec -= 1;    */    sntpMessage.transmitTimestampFrac =                                      ntohl (sntpMessage.transmitTimestampFrac);    pCurrTime->tv_sec = sntpMessage.transmitTimestampSec;    pCurrTime->tv_nsec =                       sntpcFractionToNsec (sntpMessage.transmitTimestampFrac);    return (OK);    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人91在线观看| 久久99精品国产麻豆不卡| 2022国产精品视频| 精品国精品自拍自在线| 欧美一二区视频| 欧美r级在线观看| 久久久亚洲精华液精华液精华液| 国产精品一区二区久激情瑜伽| 日韩不卡免费视频| 免费成人性网站| 国产在线一区二区综合免费视频| 麻豆国产欧美日韩综合精品二区| 日韩精品一卡二卡三卡四卡无卡| 亚洲蜜臀av乱码久久精品| 亚洲少妇30p| 日韩国产欧美三级| 国产精品亚洲成人| 99九九99九九九视频精品| 在线视频观看一区| 日韩三级伦理片妻子的秘密按摩| 日韩欧美视频在线| 国产精品入口麻豆原神| 17c精品麻豆一区二区免费| 午夜久久久影院| 国产在线不卡视频| 91免费版在线| 日韩午夜电影av| 亚洲欧美一区二区三区国产精品| 亚洲激情男女视频| 老色鬼精品视频在线观看播放| 国产一区二区三区免费看 | 午夜精品久久久久久久久久| 日韩 欧美一区二区三区| 国产乱码精品一区二区三区av | 国产精品影视在线观看| 91蜜桃视频在线| 欧美刺激午夜性久久久久久久| 国产欧美精品在线观看| 丝袜脚交一区二区| 暴力调教一区二区三区| 欧美大肚乱孕交hd孕妇| 一级精品视频在线观看宜春院 | 一区二区成人在线| 国产乱国产乱300精品| 欧美日韩亚洲丝袜制服| 中文字幕亚洲精品在线观看| 免费成人结看片| 99精品视频一区二区| 欧美精品一区二区三区蜜桃| 午夜一区二区三区视频| jlzzjlzz欧美大全| 国产欧美在线观看一区| 久久国产精品99久久人人澡| 欧美日韩综合色| 亚洲激情av在线| 99re热这里只有精品免费视频| 欧美va亚洲va| 亚洲永久精品大片| 不卡高清视频专区| 国产欧美日韩在线视频| 九九九精品视频| 日韩视频在线你懂得| 亚洲va中文字幕| 欧美色爱综合网| 亚洲精品免费在线观看| 91视视频在线直接观看在线看网页在线看| 欧美日韩精品系列| 亚洲专区一二三| 色综合天天做天天爱| 亚洲欧洲日韩在线| 99国产一区二区三精品乱码| 国产精品二三区| 一本一道综合狠狠老| 日韩一区中文字幕| 色综合久久综合网97色综合| 自拍偷拍国产亚洲| 在线视频中文字幕一区二区| 亚洲一区二区高清| 欧美一级在线观看| 国产一区二区三区久久悠悠色av| 欧美精品一卡两卡| 日本中文字幕一区二区有限公司| 在线亚洲一区观看| 亚洲v日本v欧美v久久精品| 91精品一区二区三区在线观看| 亚洲一区影音先锋| 4438成人网| 国产精品中文有码| 中文字幕日韩欧美一区二区三区| 国产91丝袜在线播放| 亚洲另类一区二区| 91精品国产91久久综合桃花 | 午夜激情久久久| 日韩免费观看高清完整版 | 日韩国产欧美在线播放| 欧美www视频| 91小视频在线| 日韩精品91亚洲二区在线观看| 欧美午夜电影在线播放| 久国产精品韩国三级视频| 久久精品视频免费| 欧美在线|欧美| 久久av资源网| 亚洲裸体在线观看| 欧美xxxx老人做受| 欧洲av在线精品| 国产一区二区美女| 亚洲v精品v日韩v欧美v专区| 精品sm捆绑视频| 欧美中文字幕一区二区三区| 久久99久久99| 一个色在线综合| 国产欧美综合色| 91精品国产91久久综合桃花| 成人av网站免费观看| 日韩精品国产精品| 亚洲天堂福利av| 久久综合色天天久久综合图片| 成人国产电影网| 奇米精品一区二区三区在线观看一| 久久精品亚洲精品国产欧美kt∨| 91免费视频网址| 国产一区二区三区美女| 午夜精品一区二区三区免费视频| 精品国产制服丝袜高跟| 精品视频在线看| 一本色道久久综合亚洲91| 韩国精品在线观看| 麻豆91精品91久久久的内涵| 亚洲欧美日韩小说| 国产精品美女视频| 中文字幕不卡一区| 精品成人在线观看| 91精品久久久久久久91蜜桃| 欧亚洲嫩模精品一区三区| 91在线丨porny丨国产| 国产二区国产一区在线观看| 免费观看30秒视频久久| 亚洲福利一二三区| 亚洲激情图片qvod| 亚洲最新视频在线观看| 1000部国产精品成人观看| 中文幕一区二区三区久久蜜桃| 欧美老肥妇做.爰bbww| 欧美日免费三级在线| 欧美中文字幕一区二区三区亚洲 | 国产日产欧美精品一区二区三区| 欧美猛男超大videosgay| 欧美中文字幕亚洲一区二区va在线 | 亚洲成国产人片在线观看| 亚洲男女毛片无遮挡| 一区二区在线看| 中文字幕永久在线不卡| 亚洲私人影院在线观看| 中文字幕在线一区| 久久综合资源网| 国产日韩欧美麻豆| 中文字幕在线免费不卡| 国产精品不卡在线观看| 亚洲精品视频自拍| 亚洲国产综合色| 日韩专区在线视频| 琪琪久久久久日韩精品| 国产又黄又大久久| 成人一区在线观看| 欧洲精品在线观看| 91精品国产麻豆| 国产午夜亚洲精品理论片色戒 | 亚洲欧美日韩国产综合在线| 日韩伦理电影网| 亚洲成人三级小说| 精品一区二区综合| 97久久精品人人做人人爽| 欧美天堂一区二区三区| 精品三级av在线| **欧美大码日韩| 日本vs亚洲vs韩国一区三区二区| 全部av―极品视觉盛宴亚洲| 国模套图日韩精品一区二区| 99视频国产精品| 欧美一二三四在线| 中文字幕一区二区三区蜜月 | 91免费观看视频| 7777精品伊人久久久大香线蕉最新版| 91玉足脚交白嫩脚丫在线播放| 欧美亚洲一区二区在线| 日韩一级高清毛片| 专区另类欧美日韩| 三级久久三级久久久| 国产福利一区在线| 欧美日韩精品一区二区天天拍小说| 欧美日本精品一区二区三区| 久久婷婷成人综合色| 亚洲主播在线播放| 国产精品1024久久| 宅男噜噜噜66一区二区66| 中文字幕中文字幕一区二区| 秋霞电影网一区二区| 色丁香久综合在线久综合在线观看| 欧美一级专区免费大片|