freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

網(wǎng)絡(luò)時(shí)間同步系統(tǒng)的設(shè)計(jì)及實(shí)現(xiàn)畢業(yè)論文-在線瀏覽

2024-08-02 00:13本頁面
  

【正文】 m1的時(shí)間服務(wù)器是整個(gè)系統(tǒng)的基礎(chǔ)[9]。即使主機(jī)在長(zhǎng)時(shí)間無法與某一時(shí)間服務(wù)器相聯(lián)系的情況下,NTP服務(wù)依然有效運(yùn)轉(zhuǎn)。所以客戶方需要同步的時(shí)間為服務(wù)器的時(shí)間加上網(wǎng)絡(luò)延遲,即:客戶方時(shí)間Ctime=Stime+T 圖21 時(shí)間同步原理圖 C/S系統(tǒng)模型的特點(diǎn)以及TCP三次握手網(wǎng)絡(luò)時(shí)間同步系統(tǒng)采用C/S(客戶/服務(wù)器)模式,主要有兩部分組成:服務(wù)器與客戶端。 網(wǎng)絡(luò)中客戶端與服務(wù)器端的連接采用TCP連接方式,即所謂的“三次握手”[10](圖21):(1)第一次握手:建立連接時(shí),客戶端發(fā)送syn包(syn=j)到服務(wù)器,并進(jìn)入SYN_SEND狀態(tài),等待服務(wù)器確認(rèn);(2)第二次握手:服務(wù)器收到syn包,必須確認(rèn)客戶的SYN(ack=j+1),同時(shí)自己也發(fā)送一個(gè)SYN包(syn=k),即SYN+ACK包,此時(shí)服務(wù)器進(jìn)入SYN_RECV狀態(tài);(3)第三次握手:客戶端收到服務(wù)器的SYN+ACK包,向服務(wù)器發(fā)送確認(rèn)包ACK(ack=k+1),此包發(fā)送完畢,客戶端和服務(wù)器進(jìn)入ESTABLISHED狀態(tài),完成三次握手。MFC是Win32API的包裝類,需要理解文檔視圖類的結(jié)構(gòu),窗口類的結(jié)構(gòu),消息流向等等;COM是代碼共享的二進(jìn)制標(biāo)準(zhǔn),需要掌握其基本原理等等。這一點(diǎn)正是微軟提供MFC類庫最重要的原因,在這個(gè)類庫中包含了一百多個(gè)程序開發(fā)過程中最常用到的對(duì)象。還可以利用面向?qū)ο蠹夹g(shù)中很重要的“繼承”方法從類庫中的已有對(duì)象派生出我們自己的對(duì)象,這時(shí)派生出來的對(duì)象除了具有類庫中的對(duì)象的特性和功能之外,還可以自己根據(jù)需要加上所需的特性和方法,產(chǎn)生一個(gè)更專門的,功能更為強(qiáng)大的對(duì)象。相比較而言,WIN API方式更加的本質(zhì)與復(fù)雜,MFC則相對(duì)的簡(jiǎn)單與抽象,而且MFC本身就是對(duì)WIN API再次封裝,所以MFC相對(duì)于WIN API開發(fā)更具備效率優(yōu)勢(shì),MFC的功能在正常情況下可以滿足絕大部分的需要,必要時(shí)可以直接調(diào)用API函數(shù),但是反過來卻十分困難,而且MFC與VC++融合擁有很多人性化的特性,比如界面、通用對(duì)話框等等,所以在設(shè)計(jì)這個(gè)系統(tǒng)的時(shí)候我采用MFC方式。3 系統(tǒng)設(shè)計(jì) 需求分析為使客戶方與服務(wù)器方的時(shí)間能夠同步,系統(tǒng)設(shè)計(jì)成客戶/服務(wù)器模式(C/S模式),C/S模式是一種兩層結(jié)構(gòu)的系統(tǒng),第一層在客戶機(jī)上安裝了客戶機(jī)應(yīng)用程序,第二層在服務(wù)器上安裝服務(wù)器管理程序。為了方便客戶方能夠定時(shí)的與服務(wù)器同步時(shí)間,在本系統(tǒng)中增加了定時(shí)器的功能,定時(shí)器主要的功能是在設(shè)定的時(shí)間內(nèi)使客戶方主動(dòng)的同步服務(wù)器的時(shí)間,避免了手動(dòng)同步帶來的不便。 系統(tǒng)模型設(shè)計(jì)  在這個(gè)C/S模式結(jié)構(gòu)中服務(wù)器功能模塊的主要作用是:(1)打開一個(gè)套接字socket (2)將套接字綁定到服務(wù)器的地址上 (3)等待連接請(qǐng)求,做好接收連接請(qǐng)求的準(zhǔn)備 (4)監(jiān)聽連接請(qǐng)求 (5)如果連接請(qǐng)求到、則建立連接,連接建立后將服務(wù)器的時(shí)間發(fā)送給客戶端(6)數(shù)據(jù)交換完成后,關(guān)閉套接字 客戶端功能模塊的主要作用:(1)打開一個(gè)套接字(2)發(fā)起連接請(qǐng)求(3)如果連接成功,向服務(wù)器發(fā)送同步時(shí)間的請(qǐng)求(4)根據(jù)服務(wù)器的時(shí)間同步自己的時(shí)間,并顯示出來(5)數(shù)據(jù)交換完成,關(guān)閉套接字系統(tǒng)中客戶方與服務(wù)器從建立連接、發(fā)送同步請(qǐng)求到同步系統(tǒng)時(shí)間的流程如圖31所示:在整個(gè)時(shí)間同步過程中服務(wù)器必須要處于工作狀態(tài),時(shí)刻監(jiān)聽著網(wǎng)絡(luò)中客戶方的請(qǐng)求信息, 監(jiān)聽到客戶方的時(shí)間同步請(qǐng)求時(shí),根據(jù)客戶方的需要,來進(jìn)行服務(wù)響應(yīng),客戶方在接收到服務(wù)器的響應(yīng)報(bào)文后,根據(jù)算服務(wù)器發(fā)送過來的時(shí)間,以及算出的網(wǎng)絡(luò)延時(shí)來同步系統(tǒng)的時(shí)間。其作用是在套接字函數(shù)中表示讓一個(gè)套接字處于監(jiān)聽到來的連接請(qǐng)求的狀態(tài),最后對(duì)客戶方的請(qǐng)求進(jìn)行響應(yīng),用Send()函數(shù)來實(shí)現(xiàn),該函數(shù)的功能是向窗口發(fā)送指定的消息并立即執(zhí)行相應(yīng)的事件處理程序。服務(wù)器在得到這三個(gè)時(shí)間之后,會(huì)將它們按照順序存放在字符數(shù)組SSS中,然后發(fā)送給客戶方。 SOCKET sockTemp = NULL。 int nLengthAddr = sizeof(SOCKADDR)。 return。    = AF_INET。   // = htons(INADDR_ANY)。 = AF_INET。表示采用本地的常用端口進(jìn)行通信, = inet_addr()。設(shè)定完服務(wù)器的地址以后就要對(duì)其進(jìn)行綁定,利用bind函數(shù),方法如下://綁定地址 if(bind(g_hSocket, (sockaddr*)amp。 return。 return。 //使開始按鈕變灰 GetDlgItem(IDC_START)EnableWindow(FALSE)。 當(dāng)服務(wù)器在接收到客戶方的時(shí)間請(qǐng)求信息包時(shí),會(huì)將其中包含的時(shí)間T1分解出來 char SSS[1000]=Set Time。 //得到客戶方發(fā)送連接請(qǐng)求的時(shí)間t1其中字符數(shù)組SSS是用來存放客戶方所需要的三個(gè)時(shí)間的,Set Time是用來通知客戶方同步本地時(shí)間的字符串,sCommand是存放客戶方發(fā)送過來的時(shí)間同步請(qǐng)求的信息,里面封裝著客戶方在發(fā)送同步請(qǐng)求時(shí)的系統(tǒng)時(shí)間T1,sCommand+8表示從數(shù)組的第八位開始存放的是時(shí)間T1。 服務(wù)器監(jiān)聽到客戶方的請(qǐng)求前利用GetLocalTime函數(shù)得到服務(wù)器的時(shí)間即T2,并將獲得的時(shí)間放入字符數(shù)組sBuff中:     SYSTEMTIME t2。 GetLocalTime(amp。 sprintf(sBuff,%4d%2d%2d%2d%2d%2d, ,)。 ,、月、日、時(shí)、分秒再獲取這些時(shí)間后將時(shí)間T2依次放在T1的后面存入數(shù)組SSS中。將時(shí)間T3放在T2的后面存入數(shù)組SSS。 if((nBytesSent = send(sockTemp, SSS, strlen(SSS), 0)) == SOCKET_ERROR) { AfxMessageBox(發(fā)送數(shù)據(jù)失敗)。 } } 當(dāng)服務(wù)器對(duì)客戶方的的時(shí)間同步請(qǐng)求響應(yīng)完成以后,服務(wù)器在最后通信結(jié)束時(shí)會(huì)將之前建立好的套接字關(guān)閉,結(jié)束通信: // 關(guān)閉Socket if(closesocket(sockTemp) == SOCKET_ERROR) { AfxMessageBox(關(guān)閉連接失敗)。 return 1。} 此外在服務(wù)器中增加了最小化系統(tǒng)托盤的作用即在運(yùn)行服務(wù)器方或者客戶方的程序時(shí),會(huì)在任務(wù)欄的最右方出現(xiàn)相關(guān)的圖標(biāo),表示程序正在運(yùn)行之中,當(dāng)要退出程序的時(shí)候,可以右鍵點(diǎn)擊圖標(biāo),此時(shí)會(huì)“退出”按鈕,左鍵單擊“退出”既可以退出程序。主要代碼為://托盤顯示// = (DWORD)sizeof(NOTIFYICONDATA)。 = IDR_MAINFRAME。 = WM_SHOWTASK。 strcpy(, 服務(wù)器程序)。m_nid)。 switch(lParam) { case WM_RBUTTONUP: // 右鍵單擊時(shí)彈出菜單 { LPPOINT lpoint = new tagPOINT。 // 得到鼠標(biāo)位置 CMenu menu。 // 聲明一個(gè)彈出式菜單 (MF_STRING, WM_DESTROY, 關(guān)閉)。 HMENU hmenu = ()。 delete lpoint。 case WM_LBUTTONDBLCLK: // 雙擊左鍵的處理 { thisShowWindow(SW_SHOWNORMAL)。 } return 0。 // TODO: Add your message handler code hereif(nType == SIZE_MINIMIZED) { ShowWindow(SW_HIDE)。m_nid)。}客戶方在本系統(tǒng)中向服務(wù)器發(fā)送時(shí)間同步請(qǐng)求,在獲得服務(wù)器方發(fā)送過來的時(shí)間包后,從數(shù)組中將時(shí)間提取出來,然后轉(zhuǎn)化成整形,算出網(wǎng)絡(luò)延時(shí),利用SetLocalTime函數(shù)同步系統(tǒng)的時(shí)間。 = AF_INET。 = inet_addr(strServer)。在這個(gè)結(jié)構(gòu)中定義了,服務(wù)器的地址協(xié)議族AF_INET、常用連接端口CONNECE_PORT、以及IP地址inet_addr(strServer) ;定義完要同步的服務(wù)器的sockaddr_in結(jié)構(gòu)后,就可以輸入服務(wù)器的IP地址進(jìn)行連接  //得到服務(wù)器IP地址 BYTE b1,b2,b3,b4。 char strServer[256]。 sprintf(strSe
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1