亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

Lua獲取網絡時間(獲取時間同步服務器的時間)

2024-07-21 23:04:31
字體:
來源:轉載
供稿:網友

網絡授時服務是一些網絡上的時間服務器提供的時間,一般用于本地時鐘同步。 授時服務有很多種,一般我們選擇RFC-868。這個協議的工作流程是:(S代表Server,C代表Client)

S: 檢測端口37
U: 連接到端口37
S: 以32位二進制數發送時間
U: 接收時間
U: 關閉連接
S: 關閉連接
協議非常簡單,用TCP連接上后,服務器直接把時間發送回來。發送的是從1900年1月1日午夜到現在的秒數。

使用luasocket
實現的方案有很多種,Lua不一定是最簡單的,選擇只是出于個人興趣。直接上代碼吧

------------------------------------------------------------------------------- Network Time Protocal-- Author: ani_di-----------------------------------------------------------------------------package.cpath = package.cpath .. ';D://tools//Lua//5.1//clibs//?.dll;?.dll'local socket = require "socket.core"server_ip = {    -- "129.6.15.29",    "132.163.4.101",    "132.163.4.102",    "132.163.4.103",    "128.138.140.44",    "192.43.244.18",    "131.107.1.10",    "66.243.43.21",    "216.200.93.8",    "208.184.49.9",    "207.126.98.204",    "207.200.81.113",    "205.188.185.33"}function nstol(str)  assert(str and #str == 4)  local t = {str:byte(1,-1)}  local n = 0  for k = 1, #t do    n= n*256 + t[k]  end  return nend-- get time from a ip address, use tcp protoclfunction gettime(ip)  print('connect ', ip)  local tcp = socket.tcp()  tcp:settimeout(10)  tcp:connect(ip, 37)  success, time = pcall(nstol, tcp:receive(4))  tcp:close()  return success and time or nilendfunction nettime()  for _, ip in pairs(server_ip) do    time = gettime(ip)    if time then       return time    end  endend


代碼原理不細說,非常簡單。唯一值得一提的是socket庫包含。最開始用的這句 require "socket"

在解釋器中表現很好,但在用C中調用會找不到相應的module。錯誤提示

  no field package.preload['socket']  no file './socket.lua'  no file 'F:/Projects/Lua/nettime/lua/socket.lua'  no file 'F:/Projects/Lua/nettime/lua/socket/init.lua'  no file 'F:/Projects/Lua/nettime/socket.lua'  no file 'F:/Projects/Lua/nettime/socket/init.lua'  no file 'D:/tools/Lua/5.1/lua/socket.luac'  no file './socket.dll'  no file './socket51.dll'  no file 'F:/Projects/Lua/nettime/socket.dll'  no file 'F:/Projects/Lua/nettime/socket51.dll'  no file 'F:/Projects/Lua/nettime/clibs/socket.dll'  no file 'F:/Projects/Lua/nettime/clibs/socket51.dll'  no file 'F:/Projects/Lua/nettime/loadall.dll'  no file 'F:/Projects/Lua/nettime/clibs/loadall.dll'.


網上也有好多類似的提問,大抵是沒仔細看作者的Guide。顯著的有這么一句

The other two environment variables instruct the compatibility module to look for dynamic libraries and extension modules in the appropriate directories and with the appropriate filename extensions.>

LUAPATH=/?.lua;?.lua LUACPATH=/?.dll;?.dll

至于"socket.core",windows默認安裝位于“/socket/core.dll”。

C宿主調用

#include <stdio.h>#include <string.h>#include <lua.h>#include <lauxlib.h>#include <lualib.h>#include <time.h>#include <Windows.h>int load(lua_State* L, const char* func, unsigned int* utc) {  lua_getglobal(L, func);  if (lua_pcall(L, 0, 1, 0)) {    printf("Error Msg pcall %s./n", lua_tostring(L, -1));    return -1;  }  if (!lua_isnumber(L,-1)) {    printf("time should be a number/n" );    return -2;  }  *utc = lua_tonumber(L,-1);  lua_pop(L, -1);  return 0;}void TimetToFileTime( time_t t, LPFILETIME pft ){  LONGLONG ll = Int32x32To64(t, 10000000) + 116444736000000000;  pft->dwLowDateTime = (DWORD) ll;  pft->dwHighDateTime = ll >>32;}int main(){  lua_State* L = luaL_newstate();  unsigned int utc = 0;  luaL_openlibs(L); if (luaL_loadfile(L, "nettime.lua") || lua_pcall(L, 0, 0, 0)) {    printf("Error Msg load %s./n", lua_tostring(L, -1));    return -1;  }  do {  if(load(L,"nettime", &utc) == 0) {    time_t tt = utc - 2208988800L;    SYSTEMTIME st;    FILETIME ft;    TimetToFileTime(tt, &ft);    if (FileTimeToSystemTime(&ft, &st))    {      printf("Today is: %d-%d-%d/n", st.wYear, st.wMonth, st.wDay);      SetSystemTime(&st);    }    break;  } else {    puts("No network!");    Sleep(10000);  }  } while (1);  lua_close(L);  return 0;}

 

 
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美伊久线香蕉线新在线| 国产精品视频白浆免费视频| 欧美激情第一页xxx| 欧美日韩国产麻豆| 亚洲www视频| 欧美激情啊啊啊| 成人一区二区电影| 久久综合免费视频影院| 一区二区在线视频播放| 8090理伦午夜在线电影| 成人黄色av免费在线观看| 色先锋久久影院av| 成人午夜在线视频一区| 国语自产精品视频在线看抢先版图片| 日韩暖暖在线视频| 日韩欧美亚洲一二三区| 亚洲欧美中文另类| 国产成人a亚洲精品| 国产精品大片wwwwww| 亚洲国内高清视频| 久久精品久久久久久国产 免费| 黄色精品一区二区| 亚洲黄色成人网| 欧美日韩加勒比精品一区| 欧美在线一级va免费观看| 日韩国产高清视频在线| 麻豆一区二区在线观看| 一夜七次郎国产精品亚洲| 日本韩国在线不卡| 色综合视频网站| 少妇精69xxtheporn| 国产午夜精品美女视频明星a级| 久久视频在线直播| 亚洲欧洲黄色网| 亚洲精品久久久久久久久久久久久| 美女精品久久久| 久久精品国产久精国产一老狼| 亚洲精品久久久久中文字幕二区| 国产精品劲爆视频| 精品视频在线观看日韩| 一区二区亚洲精品国产| 亚洲第一精品夜夜躁人人躁| 韩国国内大量揄拍精品视频| 国产99视频在线观看| 国产精品视频最多的网站| 国外日韩电影在线观看| 成人午夜在线观看| 国产精品成熟老女人| 久久精品视频va| 欧美亚洲一级片| 精品美女永久免费视频| 日韩美女福利视频| 国产精品视频最多的网站| yellow中文字幕久久| 国内精品小视频| 亚洲激情在线观看视频免费| 日本高清视频一区| 久久91亚洲精品中文字幕| 成人夜晚看av| 色婷婷综合成人av| 日本久久久久久| 中文字幕在线成人| 九九热这里只有在线精品视| 久久久久久久国产精品| 久久影院在线观看| 亚洲一区二区三区毛片| 成人免费观看49www在线观看| 亚洲天堂av综合网| 欧美激情aaaa| 全色精品综合影院| 亚洲一区二区三区777| 欧美区在线播放| 久久91亚洲人成电影网站| 久久久免费观看| 欧美极品少妇xxxxx| 色综合亚洲精品激情狠狠| 亚洲精品久久久久久久久| 亚洲精品国产精品乱码不99按摩| 亚洲xxxxx电影| 57pao成人永久免费视频| 国外成人性视频| 97精品视频在线| 国产精品视频在线观看| 91免费看国产| 国产欧洲精品视频| 91av在线精品| 亚洲成人黄色在线| 精品国产区一区二区三区在线观看| 日韩av一卡二卡| 日韩国产欧美精品一区二区三区| 欧美激情va永久在线播放| 中文字幕日韩欧美在线| 欧美富婆性猛交| 九色成人免费视频| 中文字幕少妇一区二区三区| 播播国产欧美激情| 亚洲国语精品自产拍在线观看| 日韩欧美aaa| 日韩电视剧在线观看免费网站| 日韩电影中文字幕av| 国产一区二区三区在线观看视频| 久久成人国产精品| 亚洲大胆人体视频| 狠狠爱在线视频一区| 91在线高清视频| 国产精品美女午夜av| 136fldh精品导航福利| 亚洲国内精品在线| 亚洲人午夜精品免费| 国产欧美在线视频| 亚洲精品一区中文字幕乱码| 日韩美女视频在线观看| xvideos亚洲| 亚洲欧美日韩成人| 亚洲激情中文字幕| 亚洲精品suv精品一区二区| 国产精品久久久久久久美男| 91美女福利视频高清| 国产日韩av在线播放| 精品亚洲男同gayvideo网站| 性欧美亚洲xxxx乳在线观看| 日韩电影中文 亚洲精品乱码| 日韩av中文字幕在线免费观看| 国产精品香蕉国产| 精品一区二区三区三区| 欧美亚洲日本网站| 国产精品成熟老女人| 欧美中文字幕在线观看| 欧美日韩一区二区免费在线观看| 欧亚精品在线观看| 夜夜嗨av色综合久久久综合网| 亚洲品质视频自拍网| 久久中文字幕国产| 亚洲美女又黄又爽在线观看| 亚洲一区制服诱惑| 亚洲天堂色网站| 国产精品丝袜久久久久久高清| 欧美激情精品久久久久久| 欧美一级片久久久久久久| 三级精品视频久久久久| 亚洲成人网av| 久久精品国产一区二区电影| 中文字幕欧美精品日韩中文字幕| 粗暴蹂躏中文一区二区三区| 亚洲91精品在线| 国产极品精品在线观看| 国产精品久久久久久久久粉嫩av| 97在线视频免费观看| 亚洲激情久久久| 在线视频欧美日韩精品| 国产精品久久久久秋霞鲁丝| 欧美极品美女电影一区| 欧美福利视频在线观看| 亚洲四色影视在线观看| 久久久久久久av| 精品久久久久久久久中文字幕| 欧美日韩一二三四五区| 亚洲色图美腿丝袜| 国产专区欧美专区| 久久99国产精品自在自在app| 欧美日韩国产999| 国产精品一区二区久久精品| 91精品在线观| 69**夜色精品国产69乱|