c語言 程序延時 校準,c語言實現系統時間校正工具代碼分享

//*******************************************************************

//Time Protocol是一種非常簡單的應用層協議。它返回一個未格式化的32位二進制數字,

//這個數字描述了從1900年1月1日午夜到現在的秒數。服務器在端口37監聽協議請求,以

//TCP/IP或者UDP/IP格式返回響應。將服務器的返回值轉化為本地時間是客戶端程序的責任。

//這里使用的時間服務器是129.132.2.21,更多的服務器地址在“http://tf.nist.gov/service/time-servers.html

//網站列出。

//*******************************************************************

#include

#include

usingnamespacestd;

#pragmacomment(lib,"ws2_32")

voidSetTimeFromTP(ULONGulTime)

{

//Windows文件時間是一個64位的值,它是從1601年1月1日中午12:00到現在的時間間隔,

//單位是1/10000000秒,即1000萬分之1秒

FILETIMEft;

SYSTEMTIMEst;

st.wYear=1900;

st.wMonth=1;

st.wDay=1;

st.wHour=0;

st.wMinute=0;

st.wSecond=0;

st.wMilliseconds=0;

SystemTimeToFileTime(&st,&ft);

//然后將TimeProtocol使用的基準時間加上已經逝去的時間,即ulTime

LONGLONG*pllLong=(PLONGLONG)&ft;

//注意文件時間單位是1/10000000秒,即1000萬分之1秒

*pllLong+=(LONGLONG)10000000*ulTime;

//再將時間轉化回來,更新系統時間

FileTimeToSystemTime(&ft,&st);

SetSystemTime(&st);

}

intmain(intargc,char**argv)

{

WSADATAwsaData;

WSAStartup(WINSOCK_VERSION,&wsaData);

SOCKETs=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

if(INVALID_SOCKET==s)

{

cout<

return0;

}

SOCKADDR_INservAddr;

servAddr.sin_family=AF_INET;

servAddr.sin_port=htons(37);

servAddr.sin_addr.S_un.S_addr=inet_addr("129.132.2.21");

if(-1==connect(s,(PSOCKADDR)&servAddr,sizeof(servAddr)))

{

cout<

return0;

}

//等待接收時間協議返回,最好使用異步IO,以便設置超時

ULONGulTime=0;

intiRecv=recv(s,(char*)&ulTime,sizeof(ulTime),0);

if(iRecv>0)

{

ulTime=ntohl(ulTime);

SetTimeFromTP(ulTime);

cout<

}

else

{

cout<

}

shutdown(s,SD_RECEIVE);

closesocket(s);

WSACleanup();

return0;

}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/277324.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/277324.shtml
英文地址,請注明出處:http://en.pswp.cn/news/277324.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

近半年能力沒進步原因分析與求助

2019獨角獸企業重金招聘Python工程師標準>>> 20180907 思維方式有缺陷&#xff0c;想到的解決方法經常不是最有效率的。導致工作時間內基本沒自由學習的時間。 業余時間不夠專注&#xff0c;學習方向經常變&#xff0c;沒能堅持搞透一個點就換書看&#xff0c;沒有總…

疑問:關于Microsoft Office InfoPath 2003 Toolkit for Visual Studio 2005 Beta 2

因開發急須這個東西&#xff0c;但我不是msdn的subscriber用戶不能單獨下載&#xff0c;但微軟這樣提示http://blogs.msdn.com/vsto2/archive/2005/05/05/415003.aspxIf you need the Toolkit, but you are not an MSDN Universal subscriber, if you go to http://msdn.micros…

windows下安裝Redis并部署成服務

文章來源&#xff1a;https://www.cnblogs.com/weiqinl/p/6490372.html windows下安裝Redis并部署成服務 Redis 是一個開源&#xff08;BSD許可&#xff09;的&#xff0c;內存中的數據結構存儲系統&#xff0c;它可以用作數據庫、緩存和消息中間件。 一&#xff1a;下載 下載地…

c語言編寫程序計算行列式值,新手作品:行列式計算C語言版

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓對話 ControlHeightDecrease ShiftUp Arrow 向上調整選定的控件或對話一個對話單位對話 ControlHeightIncrease ShiftDown Arrow 向下調整選定的控件或對話一個對話單位對話 ControlMoveDown Dow…

.net core高性能通訊開源組件BeetleX

BeetleX beetleX是基于dotnet core實現的輕量級高性能的TCP通訊組件&#xff0c;使用方便、性能高效和安全可靠是組件設計的出發點&#xff01;開發人員可以在Beetlx組件的支持下快帶地構建高性能的TCP通訊服務程序&#xff0c;在安全通訊方面只需要簡單地設置一下SSL信息即可實…

按組排名

rank() over,dense_rank() over,row_number() over的區別 1.rank() over&#xff1a;查出指定條件后的進行排名。特點是&#xff0c;加入是對學生排名&#xff0c;使用這個函數&#xff0c;成績相同的兩名是并列&#xff0c;下一位同學空出所占的名次。 select name,subject,sc…

《Excel與VBA程序設計》第一章

點擊下載&#xff1a;http://files.cnblogs.com/maweifeng/Excel_VBA_001.rar轉載于:https://www.cnblogs.com/maweifeng/archive/2005/06/23/179729.html

linux java環境變量設置

JAVA環境變量設置&#xff1a; #vi /etc/profile#在文件最后添加以下內容&#xff1a; export JAVA_HOME/usr/java/jdk1.8.0_91 export PATH$JAVA_HOME/bin:$PATH export CLASSPATH.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar 執行如下命令使環境變量生效&#xff1a; s…

win7 磁盤分區

右鍵點擊“我的電腦”&#xff0c;選擇“管理”命令。在打開的“計算機管理”窗口中&#xff0c;依次展開“計算機管理”→“存儲”→“磁盤管理”項。之后&#xff0c;在右側窗格中即可看到當前硬盤的分區情況。 在“未指派”的磁盤空間上點擊右鍵&#xff0c;選擇“新建磁盤…

[FxCop.設計規則]13. 定義自定義屬性參數的訪問屬性

13. 定義自定義屬性參數的訪問屬性 翻譯概述&#xff1a; 一個比較無聊的規則&#xff0c;實在看不出在什么情況下&#xff0c;一個開發者會做出違反這條規則的設計。沒有別的內容&#xff0c;只是說應該為自定義特性的構造函數中的參數提供一個相關的屬性去讀取它們的值。…

C語言程序設計實驗最短路徑,7最短路徑C語言程序設計.pdf

最短路徑旅行家的困擾第4章 圖結構 解放軍理工大學旅行家的困擾新疆特克斯縣“八卦城”第4章 圖結構 解放軍理工大學旅行家的困擾特克斯縣怎么樣幫助困擾的旅行家找到去各個地點的最短路線呢&#xff1f;旅行家居住的旅館旅行家想去的地點第4章 圖結構 解放軍理工大學問題建模使…

centos7安裝Cloudera Manager

第一部分&#xff1a;準備工作一&#xff0c;修改hostname $vim /etc/sysconfig/network $source /etc/sysconfig/network例如&#xff1a; NETWORKINGyes HOSTNAMEspark01reboot重啟服務器 二&#xff0c;關閉selinux查看SELinux狀態1&#xff0c;/usr/sbin/sestatus -v #如果…

He Fei ,First ,Good Luck

Tonight, I will go to HeFei.something as follows:1) speciality 2) sincerely3) valueHope i can bring customer some ideas .But i will throw my 100% energy to face it.Good Luck.First HeFei轉載于:https://www.cnblogs.com/boriscao/archive/2005/08/31/227199.html…

在C#中使用代理的方式觸發事件 的簡單習作

程序簡單就 不再作說明了.在學習IssueVision的OBSERVER(觀察者)模式時由于對代理和事件不是很熟悉,遇到了一些問題,所以就有了這個簡單習作.TestEvent.cs using System; namespace ConsoleApplication2{ /// <summary> /// Class1 的摘要說明。 /// </summar…

c語言遞歸有何作用,c語言中,什么是函數的遞歸,能舉個例子么

(PS:因為很多IT術語的定義都來源于國外&#xff0c;我們看的中文大部分是別人看了國外的文獻然后以他的中文素養加以解釋的&#xff01;但是中華語言博大精深&#xff01;而英語就較為簡單了&#xff0c;記得上次看高德納的《surrealnumber》時候&#xff0c;文中有一句“thebe…

Nodejs 文件上傳

node js 接收表單數據原理 /*** node js 接收表單數據*/ const http require("http"); const qs require("querystring");http.createServer((request, response) > {// 表單提交的原理if (request.url "/post" && request.meth…

c語言程序設計 銀行整存整取,《C語言程序設計習題試題集》.doc

《C語言程序設計習題試題集》.doc1、已知銀行整存整取存款不同期限的月息利率分別為&#xff1a;0.315% 期限一年0.330% 期限二年0.345% 期限三年0.375% 期限五年0.420% 期限八年要求輸入存錢的本金和期限&#xff0c;求到期時能從銀行得到的利息與本金的合計。2、輸入年份year…

Grove——.NET中的ORM實現

Grove——.NET中的ORM實現 發布日期&#xff1a; 6/30/2005| 更新日期&#xff1a; 6/30/2005作者&#xff1a;林學鵬 ORM的全稱是Object Relational Mapping&#xff0c;即對象關系映射。它的實質就是將關系數據&#xff08;庫&#xff09;中的業務數據用對象的形式表示出來&a…

let和const

發布自Kindem的博客&#xff0c;歡迎大家轉載&#xff0c;但是要注意注明出處。另外&#xff0c;該文章收納在Kindem的個人的 IT 知識整理倉庫&#xff0c;歡迎 Star、Fork、投稿 let let是在ES6加入的新的變量聲明方法&#xff0c;let聲明變量的方法和var類似: let a hello; …

GIT 操作筆記

設置不用每次都輸入 賬號密碼 git config --global credential.helper store然后&#xff0c;下次再輸入一次 賬號密碼 就可以了。刪除github上的文件$ git pull origin master 將遠程倉庫里面的項目拉下來$ dir 查看有哪些文件夾$ git rm -r --cached target 刪除target文件…