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

正文內(nèi)容

通信協(xié)議與網(wǎng)絡(luò)程序設(shè)計實驗指導(dǎo)書-資料下載頁

2025-06-01 00:32本頁面
  

【正文】 0。 0, amp。ThreadAddr)。 /*錯誤處理*/ if(!dwClientThread) printf(Cannot start client thread...)。 /*線程建立以后,主程序里不再使用線程handle,將其關(guān)閉,但線程繼續(xù)運行*/ CloseHandle((HANDLE)dwClientThread)。 } /*結(jié)束 windows sockets API*/ WSACleanup()。 return 0。 } 上述服務(wù)員程序已經(jīng)在服務(wù)器端運行,請學(xué)生認(rèn)真閱讀,然后根據(jù)實驗原理二中介紹的內(nèi)容,設(shè)計面向連接的客戶端程序,實現(xiàn)客戶與服務(wù)員間的數(shù)據(jù)傳輸。在仿真機(jī)一端運行客戶端進(jìn)程,在監(jiān)控機(jī)端捕獲數(shù)據(jù)并分析。五、 實驗報告(必要時應(yīng)準(zhǔn)備多組數(shù)據(jù))(應(yīng)加適當(dāng)?shù)淖⑨?,可讀性好)(出錯及解決方法,上機(jī)調(diào)試的結(jié)果和體會)實驗四 UDP組播程序編程一、實驗?zāi)康谋緦嵗蒘ender和Receiver兩個程序組成,Sender用戶從控制臺上輸入多播發(fā)送數(shù)據(jù),Receiver端都要求加入同一個多播組,完成接收Sender發(fā)送的多播數(shù)據(jù)。通過本次實驗,學(xué)生能進(jìn)一步掌握UDP協(xié)議的工作原理,掌握SOCKET編程的基本方法,掌握應(yīng)用C語言(或VC++)與WinSock2進(jìn)行簡單的無連接的網(wǎng)絡(luò)程序設(shè)計,實現(xiàn)組播形式的網(wǎng)絡(luò)數(shù)據(jù)傳輸。二、實驗內(nèi)容:回程時延。,然后立即接受從服務(wù)器端原樣返回的數(shù)據(jù)。,打開廣播插口選項,實現(xiàn)組播。三、實驗環(huán)境Windows操作系統(tǒng)、VC++四、實驗指導(dǎo)實現(xiàn)方法協(xié)議支持并不是所有的協(xié)議都支持多播通信,對Win32平臺而言,僅兩種可從WinSock內(nèi)訪問的協(xié)議(IP/ATM)才提供了對多播通信的支持。因通常通信應(yīng)用都建立在TCP/IP協(xié)議之上的,所以本文只針對IP協(xié)議來探討多播通信技術(shù)。支持多播通信的平臺包括Windows CE 、Windows 9Windows 9Windows NT Windows 2000和WindowsXP。,Windows CE才開始實現(xiàn)對IP多播的支持。本文實例建立在WindowsXP專業(yè)版平臺上。多播地址IP采用D類地址來支持多播。每個D類地址代表一組主機(jī)。共有28位可用來標(biāo)識小組。所以可以同時有多達(dá)25億個小組。當(dāng)一個進(jìn)程向一個D類地址發(fā)送分組時,會盡最大的努力將它送給小組的所有成員,但不能保證全部送到。有些成員可能收不到這個分組。舉個例子來說,假定五個節(jié)點都想通過I P多播,實現(xiàn)彼此間的通信,它們便可加入同一個組地址。全部加入之后,由一個節(jié)點發(fā)出的任何數(shù)據(jù)均會一模一樣地復(fù)制一份,發(fā)給組內(nèi)的每個成員,甚至包括始發(fā)數(shù)據(jù)的那個節(jié)點。D類I 。它分為兩類:永久地址和臨時地址。永久地址是為特殊用途而保留的。比如,(也不能使用),(主機(jī))。在RFC 1700文件中,提供了所有保留地址的一個詳細(xì)清單。該文件是為特殊用途保留的所有資源的一個列表,大家可以找來作為參考。“Internet分配數(shù)字專家組”(I A N A)負(fù)責(zé)著這個列表的維護(hù)。在表1中,我們總結(jié)了目前標(biāo)定為保留的一些地址。臨時組地址在使用前必須先創(chuàng)建,一個進(jìn)程可以要求其主機(jī)加入特定的組,它也能要求其主機(jī)脫離該組。當(dāng)主機(jī)上的最后一個進(jìn)程脫離某個組后,該組地址就不再在這臺主機(jī)中出現(xiàn)。每個主機(jī)都要記錄它的進(jìn)程當(dāng)前屬于哪個組。 表1 部分永久地址說明地 址 說 明 基本地址(保留) 子網(wǎng)上的所有系統(tǒng) 子網(wǎng)上的所有路由器 子網(wǎng)上所有OSPF路由器 子網(wǎng)上所有指定的OSPF路由器 RIP第2版本組地址 網(wǎng)絡(luò)時間協(xié)議 WINS服務(wù)器組地址 多播路由器多播由特殊的多播路由器來實現(xiàn),多播路由器同時也可以是普通路由器。各個多播路由器每分鐘發(fā)送一個硬件多播信息給子網(wǎng)上的主機(jī)(),要求它們報告其進(jìn)程當(dāng)前所屬的是哪一組,各主機(jī)將它感興趣的D類地址返回。這些詢問和響應(yīng)分組使用IGMP(Internet group management protocol),它大致類似于ICMP。它只有兩種分組:詢問和響應(yīng),都有一個簡單的固定格式,其中有效載荷字段的第一個字段是一些控制信息,第二字段是一個D類地址,在RFC1112中有詳細(xì)說明。多播路由器的選擇是通過生成樹實現(xiàn)的,每個多播路由器采用修改過的距離矢量協(xié)議和其鄰居交換信息,以便向每個路由器為每一組構(gòu)造一個覆蓋所有組員的生成樹。在修剪生成樹及刪除無關(guān)路由器和網(wǎng)絡(luò)時,用到了很多優(yōu)化方法。庫支持WinSock提供了實現(xiàn)多播通信的API函數(shù)調(diào)用。針對IP多播,WinSock提供了兩種不同的實現(xiàn)方法,具體取決于使用的是哪個版本的WinSock。第一種方法是WinSock1提供的,要求通過套接字選項來加入一個組;另一種方法是WinSock2提供的,它是引入一個新函數(shù),專門負(fù)責(zé)多播組的加入,這個函數(shù)便是WSAJoinLeaf,它是基層協(xié)議是無關(guān)的。本文將通過一個多播通信的實例的實現(xiàn)過程,來講敘多播實現(xiàn)的主要步驟。,但在其中對WinSock1實現(xiàn)不同的地方加以說明。實現(xiàn)步驟 C++,創(chuàng)建一個控制臺項目工程MultiCase。在此項目工程中添加Sender和Receiver兩個項目。Receiver項目實現(xiàn)步驟:(1)創(chuàng)建一個SOCK_DGRAM類型的Socket。(2)將此Socket綁定到本地的一個端口上,為了接收服務(wù)器端發(fā)送的多播數(shù)據(jù)。(3)加入多播組。①WinSock2中引入一個WSAJoinLeaf,此函數(shù)原型如下:SOCKET WSAJoinLeaf( SOCKET s, const struct sockaddr FAR *name, int namelen, LPWSABUF lpCallerData, LPWSABUF lpCalleeData, LPQOS lpSQOS, LPQOS lpGQOS, DWORD dwFlags )。其中,第一個參數(shù)s代表一個套接字句柄,是自WSASocket返回的。傳遞進(jìn)來的這個套接字必須使用恰當(dāng)?shù)亩嗖?biāo)志進(jìn)行創(chuàng)建;否則的話WSAJoinLeaf就會失敗,并返回錯誤WSAEINVAL。第二個參數(shù)是SOCKADDR(套接字地址)結(jié)構(gòu),具體內(nèi)容由當(dāng)前采用的協(xié)議決定,對于IP協(xié)議來說,這個地址指定的是主機(jī)打算加入的那個多播組。第三個參數(shù)namelen(名字長度)是用于指定name參數(shù)的長度,以字節(jié)為單位。第四個參數(shù)lpCallerData(呼叫者數(shù)據(jù))的作用是在會話建立之后,將一個數(shù)據(jù)緩沖區(qū)傳輸給自己通信的對方。第五個參數(shù)lpCalleeData(被叫者數(shù)據(jù))用于初始化一個緩沖區(qū),在會話建好之后,接收來自對方的數(shù)據(jù)。注意在當(dāng)前的Windows平臺上,lpCallerData和lpCalleeData這兩個參數(shù)并未真正實現(xiàn),所以均應(yīng)設(shè)為NULL。LpSQOS和lpGQOS這兩個參數(shù)是有關(guān)Qos(服務(wù)質(zhì)量)的設(shè)置,通常也設(shè)為NULL,有關(guān)Qos內(nèi)容請參閱MSDN或有關(guān)書籍。最后一個參數(shù)dwFlags指出該主機(jī)是發(fā)送數(shù)據(jù)、接收數(shù)據(jù)或收發(fā)兼并。該參數(shù)可選值分別是:JL_SENDER_ONLY、JL_RECEIVER_ONLY或者JL_BOTH。②在WinSock1平臺上加入多播組需要調(diào)用setsockopt函數(shù),同時設(shè)置IP_ADD_MEMBERSHIP選項,指定想加入的那個組的地址結(jié)構(gòu)。具體實現(xiàn)代碼將在下面代碼注釋列出。(4)接收多播數(shù)據(jù)。Sender實現(xiàn)步驟:(1)創(chuàng)建一個SOCK_DGRAM類型的Socket。(2)加入多播組。(3)發(fā)送多播數(shù)據(jù)。,在局域網(wǎng)中按如下步驟測試:(1)。(2)。(3)各自運行相應(yīng)的程序。(4)在Sender PC上輸入多播數(shù)據(jù)后,你就可以在Receiver PC上看到輸入的多播數(shù)據(jù)。在局域網(wǎng)中,管理員常常需要將某條信息發(fā)送給一組用戶。如果使用一對一的發(fā)送方法,雖然是可行的,但是過于麻煩,也常會出現(xiàn)漏發(fā)、錯發(fā)。為了更有效的解決這種組通信問題,出現(xiàn)了一種多播技術(shù)(也常稱為組播通信),它是基于IP層的通信技術(shù)。采用多播通信技術(shù),不僅可以實現(xiàn)一個發(fā)送者和多個接收者之間進(jìn)行通信的功能,而且可以有效減輕網(wǎng)絡(luò)通信的負(fù)擔(dān),避免資源的無謂浪費。廣播也是一種實現(xiàn)一對多數(shù)據(jù)通信的模式,但廣播與多播在實現(xiàn)方式上有所不同。廣播是將數(shù)據(jù)從一個工作站發(fā)出,局域網(wǎng)內(nèi)的其他所有工作站都能收到它。這一特征適用于無連接協(xié)議,因為LAN上的所有機(jī)器都可獲得并處理廣播消息。使用廣播消息的不利之處是每臺機(jī)器都必須對該消息進(jìn)行處理。多播通信則不同,數(shù)據(jù)從一個工作站發(fā)出后,如果在其它LAN上的機(jī)器上面運行的進(jìn)程表示對這些數(shù)據(jù)“有興趣”,多播數(shù)據(jù)才會制給它們。廣播也是一種實現(xiàn)一對多數(shù)據(jù)通信的模式,但廣播與多播在實現(xiàn)方式上有所不同。廣播是將數(shù)據(jù)從一個工作站發(fā)出,局域網(wǎng)內(nèi)的其他所有工作站都能收到它。這一特征適用于無連接協(xié)議,因為LAN上的所有機(jī)器都可獲得并處理廣播消息。使用廣播消息的不利之處是每臺機(jī)器都必須對該消息進(jìn)行處理。多播通信則不同,數(shù)據(jù)從一個工作站發(fā)出后,如果在其它LAN上的機(jī)器上面運行的進(jìn)程表示對這些數(shù)據(jù)“有興趣”,多播數(shù)據(jù)才會制給它們。本實例由Sender和Receiver兩個程序組成,Sender用戶從控制臺上輸入多播發(fā)送數(shù)據(jù),Receiver端都要求加入同一個多播組,完成接收Sender發(fā)送的多播數(shù)據(jù)。五、實驗報告(必要時應(yīng)準(zhǔn)備多組數(shù)據(jù))(應(yīng)加適當(dāng)?shù)淖⑨?,可讀性好)(出錯及解決方法,上機(jī)調(diào)試的結(jié)果和體會)實驗五 基于MFC Socket類的網(wǎng)絡(luò)編程一、實驗?zāi)康耐ㄟ^編寫簡單的聊天程序,理解MFC的Socket類同Socket API之間的區(qū)別以及MFC的兩種類之間的聯(lián)系與區(qū)別。二、實驗內(nèi)容設(shè)計實現(xiàn)一個簡單的聊天系統(tǒng),包括客戶端和服務(wù)器端。三、實驗環(huán)境Windows操作系統(tǒng)、VC++四、實驗指導(dǎo)(一)實驗步驟 C++,創(chuàng)建一個控制臺項目工程chat。在此項目工程中添加Client和Server兩個項目。服務(wù)器端關(guān)鍵代碼如下:開啟服務(wù)器功能:void OnServerOpen() //開啟服務(wù)器功能{  WSADATA wsaData?!nt iErrorCode?!har chInfo[64]。 if (WSAStartup(WINSOCK_VERSION, amp。wsaData)) //調(diào)用Windows Sockets DLL  { MessageBeep(MB_ICONSTOP)。   MessageBox(Winsock無法初始化!, AfxGetAppName(), MB_OK|MB_ICONSTOP)?!  SACleanup()?!  eturn。 } else  WSACleanup()。   if (gethostname(chInfo, sizeof(chInfo)))  { ReportWinsockErr(\n無法獲取主機(jī)!\n )?!  eturn。 }  CString csWinsockID = \n==服務(wù)器功能開啟在端口:No. ?! sWinsockID += itoa(m_pDocm_nServerPort, chInfo, 10)?! sWinsockID += \n?! rintString(csWinsockID)。 //在程序視圖顯示提示信息的函數(shù),讀者可自行創(chuàng)建  m_pDocm_hServerSocket=socket(PF_INET, SOCK_STREAM, DEFAULT_PROTOCOL)。   //創(chuàng)建服務(wù)器端Socket,類型為SOCK_STREAM,面向連接的通信  if (m_pDocm_hServerSocket == INVALID_SOCKET)  { ReportWinsockErr(無法創(chuàng)建服務(wù)器socket!)。   return。}  m_pDoc = AF_INET?! _pDoc = INADDR_ANY。   m_pDoc = htons(m_pDocm_nServerPort)?! f (bind(m_pDocm_hServerSocket, (LPSOCKADDR)amp。m_pDocm_sockServerAddr,        sizeof(m_pDocm_sockServerAddr)) == SOCKET_ERROR) //與選定的端口綁定   {ReportWinsockErr(無法綁定服務(wù)器socket!)。    return。}   iErrorCode=WSAAsyncSelect(m_pDocm_hServerSocket,m_hWnd,   WM_SERVER_ACCEPT, FD_ACCEPT)?!  ?/設(shè)定服務(wù)器相應(yīng)的網(wǎng)絡(luò)事件為FD_ACCEPT,即連接請求,   // 產(chǎn)生相應(yīng)傳遞給窗口的消息為WM_SERVER_ACCEPT  if (iErrorCode == SOCKET_ERROR)    { ReportWinsockErr(WSAAsyncSelect設(shè)定失敗!)?!   eturn。}   if (listen(m_pDocm_hServerSocket, QUEUE_SIZE) == SOCKET_ERROR) //開始監(jiān)聽客戶連接請求   {ReportWinsockErr(服務(wù)器socket監(jiān)聽失敗!)?!   _pParentMenuEnableMenuItem(ID_SERVER_OPEN, MF_ENABLED)?!   eturn。}  m_bServerIsOpen = TRUE。 //監(jiān)視服務(wù)器是否打開的變量 return。 }響應(yīng)客戶發(fā)送聊天文字到服務(wù)器:ON_MESSAGE(WM_CLIENT_READ, OnClientRead)LRESULT OnClientRead(WPARAM wParam, LPARAM lParam){ int iRead?!nt iBufferLength?!nt iEnd?!nt iRemainSpace?!har chInBuffer[1024]?!nt i?!or(i=0。(iMAXCLIENT)amp。amp。(M_ACLIENTSOCKET[I]!=WPARAM)。I++)   //MAXClient是服務(wù)器可響應(yīng)連接的最大數(shù)目  {} if(i==MAXClient) return 0L。  iBufferLength = iRemainSpace = sizeof(chInBuffer)?! End = 0?! RemainSpace = iEnd?! BytesRead = recv(m_aClientSocket[i], (LPSTR)(chInBuffer+iEnd), iSpaceRemaining, NO_FLAGS)。   //用可控緩沖接收函數(shù)recv()來接收字符  iEnd+=iRead。
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1