![網(wǎng)絡(luò)程序課程設(shè)計(jì)實(shí)現(xiàn)網(wǎng)絡(luò)對(duì)時(shí)程序_第1頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-7/4/e6dcd46c-d568-4dda-a315-7452cde194a1/e6dcd46c-d568-4dda-a315-7452cde194a11.gif)
![網(wǎng)絡(luò)程序課程設(shè)計(jì)實(shí)現(xiàn)網(wǎng)絡(luò)對(duì)時(shí)程序_第2頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-7/4/e6dcd46c-d568-4dda-a315-7452cde194a1/e6dcd46c-d568-4dda-a315-7452cde194a12.gif)
![網(wǎng)絡(luò)程序課程設(shè)計(jì)實(shí)現(xiàn)網(wǎng)絡(luò)對(duì)時(shí)程序_第3頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-7/4/e6dcd46c-d568-4dda-a315-7452cde194a1/e6dcd46c-d568-4dda-a315-7452cde194a13.gif)
![網(wǎng)絡(luò)程序課程設(shè)計(jì)實(shí)現(xiàn)網(wǎng)絡(luò)對(duì)時(shí)程序_第4頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-7/4/e6dcd46c-d568-4dda-a315-7452cde194a1/e6dcd46c-d568-4dda-a315-7452cde194a14.gif)
![網(wǎng)絡(luò)程序課程設(shè)計(jì)實(shí)現(xiàn)網(wǎng)絡(luò)對(duì)時(shí)程序_第5頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-7/4/e6dcd46c-d568-4dda-a315-7452cde194a1/e6dcd46c-d568-4dda-a315-7452cde194a15.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、課題名稱: 實(shí)現(xiàn)網(wǎng)絡(luò)對(duì)時(shí)程序 院 (系): 計(jì)算機(jī)工程學(xué)院 專 業(yè): 通信工程 班 級(jí): 學(xué)生姓名: 學(xué) 號(hào): 指導(dǎo)教師: 2012年6月17日目錄一、實(shí)驗(yàn)軟件3二、設(shè)計(jì)內(nèi)容3三、設(shè)計(jì)原理4四、設(shè)計(jì)過程4五、程序代碼及測(cè)試分析51、服務(wù)器:52、客戶端:73、程序運(yùn)行結(jié)果:9六、心得體會(huì)11七、參考文獻(xiàn)11摘 要:本次課程設(shè)計(jì)以visual c+ 6.0作為開發(fā)平臺(tái),完成網(wǎng)絡(luò)對(duì)時(shí)服務(wù)系統(tǒng),系統(tǒng)分為服務(wù)器端和客戶端,客戶端能夠從服務(wù)器端取出標(biāo)準(zhǔn)時(shí)間,然后同步本機(jī)時(shí)鐘。通過實(shí)踐復(fù)習(xí)鞏固課堂所學(xué)的理論知識(shí),也可以加強(qiáng)自己的實(shí)踐操作,提高對(duì)所學(xué)知識(shí)的綜合應(yīng)用能力,同時(shí)也經(jīng)過課后的上網(wǎng)查資料,同學(xué)間的相
2、互探討,逐步修改,完成了本系統(tǒng)的設(shè)計(jì),設(shè)計(jì)基本上實(shí)現(xiàn)了設(shè)計(jì)所要求的功能。一、實(shí)驗(yàn)軟件(visual c+ 6.0)visual c+ 6.0,簡(jiǎn)稱vc或者vc6.0,是微軟推出的一款c+編譯器,將“高級(jí)語(yǔ)言”翻譯為“機(jī)器語(yǔ)言(低級(jí)語(yǔ)言)”的程序。visual c+是一個(gè)功能強(qiáng)大的可視化軟件開發(fā)工具。visual c+ 6.0對(duì)網(wǎng)絡(luò)編程的支持有socket支持,wininet支持,mapi和isapi支持等。其中,windows sockets api是tcp/ip網(wǎng)絡(luò)環(huán)境里,也是internet上進(jìn)行開發(fā)最為通用的api。在tcp/ip網(wǎng)絡(luò)通信環(huán)境下,socket數(shù)據(jù)傳輸是一種特殊的i/o,它
3、也相當(dāng)于一種文件描述符,具有一個(gè)類似于打開文件的函數(shù)調(diào)用socket()??梢赃@樣理解:socket實(shí)際上是一個(gè)通信端點(diǎn),通過它,用戶的socket程序可以通過網(wǎng)絡(luò)和其他的socket應(yīng)用程序通信。二、設(shè)計(jì)內(nèi)容在局域網(wǎng)中有很多應(yīng)用軟件為了協(xié)同工作,需要保證客戶機(jī)上時(shí)間統(tǒng)一,方法是客戶機(jī)從一個(gè)時(shí)間相對(duì)正確的服務(wù)器讀取時(shí)間,以此來校正本地時(shí)間。網(wǎng)絡(luò)對(duì)時(shí)系統(tǒng)分服務(wù)器端程序和客戶端程序。在服務(wù)器端程序需要達(dá)到以下功能:能夠接收局域網(wǎng)中任一臺(tái)客戶機(jī)的對(duì)時(shí)請(qǐng)求并準(zhǔn)確向客戶機(jī)發(fā)送服務(wù)器端的時(shí)間和日期;客戶端程序要達(dá)到以下功能:能夠設(shè)定服務(wù)器的主機(jī)或者ip地址,能夠接收服務(wù)器端發(fā)送的時(shí)間和日期信息并以此校正本
4、地時(shí)間與服務(wù)器端的時(shí)間同步。按照c/s模型設(shè)計(jì)一個(gè)網(wǎng)絡(luò)對(duì)時(shí)服務(wù)系統(tǒng),系統(tǒng)分為服務(wù)器端(server)和客戶端(client)。服務(wù)器按照時(shí)間協(xié)議的要求(參考rfc-868),對(duì)發(fā)出對(duì)時(shí)請(qǐng)求的客戶端,以tcp/i p的格式返回響應(yīng)??蛻舳烁鶕?jù)服務(wù)器端的返回值設(shè)計(jì)本地時(shí)間與服務(wù)器的時(shí)間同步。三、設(shè)計(jì)原理tcp/ip網(wǎng)絡(luò)對(duì)時(shí)服務(wù)系統(tǒng)客戶端和服務(wù)器原理主要分2個(gè)部分。服務(wù)器端創(chuàng)建套接監(jiān)聽字,并為它關(guān)聯(lián)一個(gè)本地地址(指定ip地址和端口),然后進(jìn)入監(jiān)聽狀態(tài)準(zhǔn)備接受客戶的連接請(qǐng)求,為客戶端的連接請(qǐng)求,服務(wù)器調(diào)用accept函數(shù)??蛻舳藙?chuàng)建套接字即可調(diào)用conenet函數(shù)試圖連接服務(wù)器監(jiān)聽套接字,當(dāng)服務(wù)器端的
5、accept函數(shù)返回后,connect函數(shù)也返回。此時(shí)客戶端使用socket函數(shù)創(chuàng)建的套接字,雙方就可以通信了。服務(wù)器調(diào)用socket函數(shù)創(chuàng)建套接字server,調(diào)用bind綁定套接字到本地ip地址和端口,在端口監(jiān)聽并調(diào)用recvfrom函數(shù)接受客戶端的對(duì)時(shí)請(qǐng)求,并調(diào)用sendto函數(shù)發(fā)送服務(wù)器時(shí)間到客戶端,然后關(guān)閉套接字??蛻舳苏{(diào)用socket函數(shù)創(chuàng)建套接字client,調(diào)用sendto函數(shù)向服務(wù)器端發(fā)送對(duì)時(shí)請(qǐng)求,服務(wù)器端響應(yīng)請(qǐng)求之后,客戶端調(diào)用recvfrom函數(shù)從服務(wù)器端接收標(biāo)準(zhǔn)時(shí)間并設(shè)置本地時(shí)間與服務(wù)器端時(shí)間同步。四、設(shè)計(jì)過程 對(duì)時(shí)服務(wù)系統(tǒng)的基本結(jié)構(gòu)如圖:客戶端myclient服務(wù)器m
6、yserversocket()創(chuàng)建數(shù)據(jù)報(bào)套接字clientsocket()創(chuàng)建數(shù)據(jù)報(bào)套接字serverbind()與本地地址綁定在37端口等待客戶端對(duì)時(shí)請(qǐng)求 recvfrom()接收客戶端請(qǐng)求sendto()發(fā)送數(shù)據(jù)報(bào)對(duì)時(shí)請(qǐng)求 服務(wù)請(qǐng)求 recvfrom()接收服務(wù)器數(shù)據(jù)報(bào)sendto()發(fā)送數(shù)據(jù)報(bào) 服務(wù)應(yīng)答 close()關(guān)閉套接字serverclose()關(guān)閉套接字client 如上流程圖所示:服務(wù)器端調(diào)用socket函數(shù)創(chuàng)建套接字server,然后調(diào)用bind綁定套接字到本地ip地址和端口,在端口等待客戶端的對(duì)時(shí)請(qǐng)求并調(diào)用recvfrom函數(shù)接受客戶端的對(duì)時(shí)請(qǐng)求,并調(diào)用sendto函數(shù)發(fā)
7、送服務(wù)器時(shí)間到客戶端,然后關(guān)閉服務(wù)器套接字server??蛻舳苏{(diào)用socket函數(shù)創(chuàng)建套接字client,然后調(diào)用sendto函數(shù)向服務(wù)器端發(fā)送對(duì)時(shí)請(qǐng)求,服務(wù)器端響應(yīng)客戶端的對(duì)時(shí)請(qǐng)求之后,調(diào)用sendto函數(shù)發(fā)送服務(wù)器時(shí)間到客戶端,然后客戶端調(diào)用recvfrom函數(shù)接收服務(wù)器端發(fā)送過來的響應(yīng),接收標(biāo)準(zhǔn)時(shí)間并設(shè)置本地時(shí)間與服務(wù)器端時(shí)間同步。五、程序代碼及測(cè)試分析1、服務(wù)器:#pragma comment(lib,ws2_32.lib)#include#include#includeint main()wsadata wsadata;int err = wsastartup(winsock_ver
8、sion,&wsadata);if(err != 0)printf(wsastartup() failed :%dn,wsagetlasterror();return -1;socket sock = socket(af_inet,sock_stream,0);if(sock = invalid_socket)printf(socket() failed:%dn,wsagetlasterror();wsacleanup();return -1;sockaddr_in localaddr; /用于發(fā)送數(shù)據(jù)的服務(wù)器的地址結(jié)構(gòu)localaddr.sin_family = af_inet;locala
9、ddr.sin_port = htons(20000);localaddr.sin_addr.s_un.s_addr = htonl(inaddr_any); /ip地址由系統(tǒng)指定使用當(dāng)前配置的iperr = bind(sock,(sockaddr *)&localaddr,sizeof(localaddr);if(err = socket_error)printf(bind() failed:%dn,wsagetlasterror();closesocket(sock);wsacleanup();return -1;err=listen(sock,5);if(err = socket_err
10、or)printf(listen() failed:%dn,wsagetlasterror();closesocket(sock);wsacleanup();return -1;sockaddr_in clientaddr;int len = sizeof(clientaddr);while(1)printf(-網(wǎng)絡(luò)對(duì)時(shí)服務(wù)系統(tǒng)歡迎您(通信092班 陳劍鋒)-nn);printf(等待客戶端的對(duì)時(shí)請(qǐng)求n);socket sockconn = accept(sock,(sockaddr *)&clientaddr,&len);if(sockconn = invalid_socket)printf
11、(accept() failed:%dn,wsagetlasterror();closesocket(sock);wsacleanup();return -1;printf(請(qǐng)求時(shí)間同步的客戶端為:%s port:%dn,inet_ntoa(clientaddr.sin_addr),clientaddr.sin_port);char rbuf1024;while(1)memset(rbuf,0,1024);int rb = recv(sockconn,rbuf,1024,0);if(rb = socket_error)printf(recv() failed:%dn,wsagetlasterr
12、or();closesocket(sockconn);break;if(rb = 0)printf(connection is closed.nnn );shutdown(sockconn,sd_send);closesocket(sockconn);break;printf(服務(wù)器受到%d的請(qǐng)求:%sn,rb,rbuf);systemtime st; getlocaltime( &st ); printf(服務(wù)器時(shí)間:%04d-%02d-%02d %02d:%02d:%02dn,st.wyear,st.wmonth,st.wday,st.whour,st.wminute,st.wsecond
13、);int sb = send(sockconn,(char *)&st,sizeof(st),0);if(sb = socket_error)printf(send() failed:%dn,wsagetlasterror();closesocket(sockconn);wsacleanup();return -1;printf(發(fā)送本地時(shí)間成功!n);closesocket(sock);wsacleanup();return 0;2、 客戶端:#pragma comment(lib,ws2_32.lib)#include#include#include#include int main()
14、 int m;dowsadata wsadata;int err = wsastartup(winsock_version,&wsadata);printf(-網(wǎng)絡(luò)對(duì)時(shí)服務(wù)系統(tǒng)歡迎您(通信092班 陳劍鋒)-nn);if(err != 0)printf(wsastartup() 出錯(cuò):%dn,wsagetlasterror();return -1;socket sock = socket(af_inet,sock_stream,0);if(sock = invalid_socket)printf(socket()出錯(cuò):%dn,wsagetlasterror();wsacleanup();ret
15、urn -1;sockaddr_in serveraddr;serveraddr.sin_family = af_inet;serveraddr.sin_port = htons(20000);serveraddr.sin_addr.s_un.s_addr = inet_addr(127.0.0.1);err=connect(sock,(sockaddr *)&serveraddr,sizeof(serveraddr);if(err = socket_error)printf(connect()出錯(cuò):%dn,wsagetlasterror();closesocket(sock);wsaclea
16、nup();return -1;char data = 客戶端請(qǐng)求時(shí)間同步!;int sb = send(sock,data,strlen(data),0);if(sb = socket_error)printf(send()出錯(cuò):%dn,wsagetlasterror();closesocket(sock);wsacleanup();return -1;printf(已經(jīng)發(fā)送請(qǐng)求給服務(wù)器 %sn,data,inet_ntoa(serveraddr.sin_addr);shutdown(sock,sd_send);systemtime st,sp;getlocaltime(&sp); prin
17、tf(本地時(shí)間為:%04d-%02d-%02d%.2d:%.2d:%.2d n,sp.wyear,sp.wmonth,sp.wday,sp.whour,sp.wminute,sp.wsecond);while(1)/memset(rbuf,0,1024);int rb =recv(sock,(char *)&st,sizeof(st),0);if(rb = socket_error)printf(recv()出錯(cuò):%dn,wsagetlasterror();closesocket(sock);wsacleanup();return -1;if(rb=0)printf(connection is
18、 closed.nn);shutdown(sock,sd_send);closesocket(sock);break;printf(獲取的服務(wù)器時(shí)間為:%04d-%02d-%02d %.2d:%.2d:%.2d n, st.wyear,st.wmonth,st.wday,st.whour, st.wminute, st.wsecond);setlocaltime(&st);printf(修改本地時(shí)間成功,已與%s時(shí)間同步!nn,inet_ntoa(serveraddr.sin_addr);printf(繼續(xù)請(qǐng)按(1),退出請(qǐng)按(0)n);scanf(%d,&m);while(m=1);3、 程序運(yùn)行結(jié)果:a、客戶端向服務(wù)器發(fā)送對(duì)時(shí)請(qǐng)求,若服務(wù)器還沒有打開,則客戶端顯示如下:b、服務(wù)器打開運(yùn)行之后,等待客戶端的對(duì)時(shí)請(qǐng)求,服務(wù)器顯示如下:c、服務(wù)器打開運(yùn)行之后,接受客戶端的對(duì)時(shí)請(qǐng)求,服務(wù)器顯示如下:d、服務(wù)器應(yīng)答后客戶端顯示如下:e、按(1)刷新時(shí)間,服務(wù)器與客戶端顯示如下:六、心得體會(huì)通過本次課程設(shè)計(jì),加深了對(duì)網(wǎng)絡(luò)程序課程知識(shí)的認(rèn)知,進(jìn)一步鞏固了課堂上所學(xué)習(xí)的理論知識(shí),也可以加強(qiáng)自己的實(shí)踐操作,提
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 重慶2025年重慶市涪陵區(qū)教育事業(yè)單位面向應(yīng)屆公費(fèi)師范生招聘75人筆試歷年參考題庫(kù)附帶答案詳解
- 部分學(xué)校上學(xué)期期中考試八年級(jí)語(yǔ)文試卷(PDF版無答案)
- 漯河2024年河南漯河市審計(jì)局事業(yè)單位引進(jìn)高層次人才2人筆試歷年參考題庫(kù)附帶答案詳解
- 河南2024年河南信陽(yáng)師范大學(xué)招聘碩士研究生42人筆試歷年參考題庫(kù)附帶答案詳解
- 昭通2025年云南昭通綏江縣住建局招聘編外聘用人員筆試歷年參考題庫(kù)附帶答案詳解
- 2025年中國(guó)發(fā)動(dòng)機(jī)橫梁總成市場(chǎng)調(diào)查研究報(bào)告
- 2025年重氮項(xiàng)目可行性研究報(bào)告
- 2025至2031年中國(guó)鏡子玻璃行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025至2031年中國(guó)計(jì)量?jī)x器管理系統(tǒng)行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025年真空浸漆烘干機(jī)項(xiàng)目可行性研究報(bào)告
- 2025年“春訓(xùn)”學(xué)習(xí)心得體會(huì)例文(3篇)
- 咯血病人介入術(shù)后護(hù)理
- 2025年春新外研版(三起)英語(yǔ)三年級(jí)下冊(cè)課件 Unit4第1課時(shí)Startup
- 幼兒園市級(jí)課一等獎(jiǎng)-大班語(yǔ)言健康繪本《我的情緒小怪獸》有聲繪本課件
- 2025年供電所所長(zhǎng)個(gè)人工作總結(jié)(2篇)
- 春節(jié)節(jié)后復(fù)工全員安全意識(shí)提升及安全知識(shí)培訓(xùn)
- 2025四川廣安發(fā)展建設(shè)集團(tuán)限公司第一批招聘6人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年語(yǔ)言文字工作計(jì)劃
- 道路運(yùn)輸企業(yè)主要負(fù)責(zé)人和安全生產(chǎn)管理人員安全考核試題庫(kù)(含參考答案)
- 《國(guó)防動(dòng)員準(zhǔn)備》課件
- 《(近)零碳園區(qū)評(píng)價(jià)技術(shù)規(guī)范》
評(píng)論
0/150
提交評(píng)論