東南大學(xué)-計(jì)網(wǎng)-第三次試驗(yàn)_第1頁(yè)
東南大學(xué)-計(jì)網(wǎng)-第三次試驗(yàn)_第2頁(yè)
東南大學(xué)-計(jì)網(wǎng)-第三次試驗(yàn)_第3頁(yè)
東南大學(xué)-計(jì)網(wǎng)-第三次試驗(yàn)_第4頁(yè)
東南大學(xué)-計(jì)網(wǎng)-第三次試驗(yàn)_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)專心-專注-專業(yè)精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)東南大學(xué)自動(dòng)化學(xué)院實(shí) 驗(yàn) 報(bào) 告課程名稱: 信息通信網(wǎng)絡(luò)概論 第 三 次實(shí)驗(yàn)實(shí)驗(yàn)名稱: 基于客戶/服務(wù)器模式的網(wǎng)絡(luò)通信客戶端和服務(wù)器端設(shè)計(jì) 院 (系): 自動(dòng)化 專 業(yè): 自動(dòng)化 姓 名: 耿佳輝 學(xué) 號(hào): 實(shí) 驗(yàn) 室: 403 實(shí)驗(yàn)組別: 同組人員: 實(shí)驗(yàn)時(shí)間:2013年12月 16日評(píng)定成績(jī): 審閱教師: 目 錄實(shí)驗(yàn)?zāi)康暮鸵?二實(shí)驗(yàn)原理 3三實(shí)驗(yàn)方案與實(shí)驗(yàn)步驟 3四實(shí)驗(yàn)設(shè)備與器材配置 3五實(shí)驗(yàn)記錄 3六思考題或討論題 4實(shí)驗(yàn)報(bào)告內(nèi)容:實(shí)驗(yàn)?zāi)康暮鸵?在前面兩個(gè)實(shí)驗(yàn)

2、的基礎(chǔ)上進(jìn)一步了解網(wǎng)絡(luò)編程的過(guò)程。2掌握Windows環(huán)境下基于WinSock的編程方法和通訊實(shí)現(xiàn)。3編寫一個(gè)聊天程序,即以客戶端和服務(wù)器的模式進(jìn)行互發(fā)消息。 利用客戶端和服務(wù)器模式,編寫一個(gè)點(diǎn)對(duì)點(diǎn)的,可以相互發(fā)送和接收消息的程序,也就是常說(shuō)的聊天工具。該工具具有既可以作為服務(wù)器也可以做為客戶端使用。 當(dāng)作為服務(wù)器時(shí),能輸入IP值和端口值,并能進(jìn)行在線偵聽,能接受連接請(qǐng)求,并實(shí)現(xiàn)消息互發(fā)。 當(dāng)作為客戶端時(shí),能輸入服務(wù)器的IP值和端口值,并進(jìn)行連接請(qǐng)求,能與服務(wù)器進(jìn)行互發(fā)消息,聊天結(jié)束后還要實(shí)現(xiàn)與服務(wù)器的斷開的功能。實(shí)驗(yàn)原理實(shí)驗(yàn)方案與實(shí)驗(yàn)步驟使用的函數(shù) 服務(wù)器端: 建立Socket:調(diào)用 成員函

3、數(shù)Socket()函數(shù) 綁定端口:調(diào)用成員函數(shù)bind()函數(shù) (注:對(duì)于MFC編程我們只要調(diào)用Create()函數(shù)就可以包括上面的兩個(gè)函數(shù)) 監(jiān)聽:調(diào)用成員函數(shù)listen()函數(shù) CMySocket m_sConnectSocket;CMySocket m_sListenSocket;/是客戶機(jī)還是服務(wù)器if(m_cmbType.GetCurSel()=1)/是服務(wù)器/創(chuàng)建于設(shè)置端口綁定的套接字m_sListenSocket.Create(m_nServPort);/開始偵聽m_sListenSocket.Listen(); else/是客戶機(jī)/創(chuàng)建一個(gè)默認(rèn)的套接字m_sConnectSo

4、cket.Create();/發(fā)出連接請(qǐng)求m_sConnectSocket.Connect(m_strServName,m_nServPort); 監(jiān)聽:調(diào)用成員函數(shù)listen()函數(shù) 服務(wù)器端接受客戶端的連接請(qǐng)求:調(diào)用成員函數(shù)accept() 函數(shù) /對(duì)于服務(wù)器void CgengjiahuiDlg:OnAccept()/對(duì)于服務(wù)器/接受連接請(qǐng)求m_sListenSocket.Accept(m_sConnectSocket);/接受連接請(qǐng)求/ 客戶端: 建立客戶端的 Socket :調(diào)用 socket() 函數(shù) (注:我們也是調(diào)用Create()函數(shù)來(lái)完成Socket的建立的) 提出連接申

5、請(qǐng) :調(diào)用成員函數(shù)connect()函數(shù)以上這些函數(shù)我們是在重載前面的虛擬函數(shù)時(shí)使用的,例如OnAccept()函數(shù)中調(diào)用accept() 函數(shù)等等。數(shù)據(jù)發(fā)送部分void CgengjiahuiDlg:OnSendMsg() int nLen;/消息長(zhǎng)度int nSent;/已發(fā)送消息的長(zhǎng)度/從對(duì)話框取回?cái)?shù)據(jù)UpdateData(TRUE);/判斷要發(fā)送的消息是否為空if(!m_strMsg.IsEmpty()/獲取消息的長(zhǎng)度nLen = m_strMsg.GetLength();/發(fā)送消息nSent = m_sConnectSocket.Send(LPCTSTR(m_strMsg),nLen

6、);/發(fā)送是否成功if(nSent!=SOCKET_ERROR)/將消息添加到“已發(fā)送列表框”m_listSent.AddString(m_strMsg);/更新對(duì)話框UpdateData(FALSE);elseAfxMessageBox(信息發(fā)送錯(cuò)誤,MB_OK|MB_ICONSTOP);接收,數(shù)據(jù)段處理部分char* pBuf = new char1025;/char pBuf1025;int nBufSize = 1024;int nReceived;CString strReceived;/接收消息nReceived = m_sConnectSocket.Receive(pBuf,nB

7、ufSize); /判斷消息接收是否成功?if(nReceived!=SOCKET_ERROR)/保留接收消息的有效部分pBufnReceived = NULL;/將消息轉(zhuǎn)化為CString對(duì)象strReceived = pBuf;/將消息添加到“已接收的消息”列表框m_listReceived.AddString(strReceived);/更新對(duì)話框/UpdateData(FALSE);elseAfxMessageBox(信息接收錯(cuò)誤!,MB_OK|MB_ICONSTOP); delete pBuf;實(shí)驗(yàn)設(shè)備與器材配置實(shí)驗(yàn)環(huán)境visual c+ 6.0 MFC實(shí)驗(yàn)記錄實(shí)驗(yàn)總結(jié)這個(gè)應(yīng)用程序在

8、MFC WinSock編程中很有代表性,可以用于兩臺(tái)計(jì)算機(jī)之間進(jìn)行字符串傳輸;創(chuàng)建思路簡(jiǎn)單,就是利用MFC AppWizard生成程序框架,通過(guò)對(duì)CAsynSocket類增加一個(gè)指向?qū)υ捒蝾惖弥羔?,?duì)CAsynSocket類中的一些事件處理函數(shù)進(jìn)行重載,使這些套接字事件發(fā)生時(shí),應(yīng)用程序能夠自動(dòng)到對(duì)話框類中尋找合適的函數(shù)執(zhí)行。這個(gè)聊天室應(yīng)用程序是基于客戶服務(wù)器模型的,一個(gè)服務(wù)器只能支持一個(gè)客戶,因此它實(shí)際上是一個(gè)基于“點(diǎn)對(duì)點(diǎn)”模型的應(yīng)用程序。通過(guò)這個(gè)應(yīng)用程序,用戶可以在兩臺(tái)計(jì)算機(jī)之間進(jìn)行字符串傳輸即可以為兩個(gè)人進(jìn)行網(wǎng)上聊天提供服務(wù),而且兩個(gè)人的傳輸?shù)淖址槐A粼诔绦虻牧斜砜蛑?,并且進(jìn)行分類,分

9、為傳送和接收的字符串。思考題或討論題本次實(shí)驗(yàn)所涉及的“實(shí)體”是什么?實(shí)體間通過(guò)什么方式建立協(xié)議?答:實(shí)體,可以理解為具體的設(shè)備,計(jì)算機(jī)之類的終端、路由器交換機(jī)之類的連接設(shè)備都是實(shí)體。本次實(shí)驗(yàn)中實(shí)體即客戶端和服務(wù)器,是通過(guò)創(chuàng)建套接字,服務(wù)器端偵聽,客戶端發(fā)送連接請(qǐng)求,然后服務(wù)器和客戶端連接,即客戶端-服務(wù)器方式建立協(xié)議. TCP/IP應(yīng)用服務(wù)采用客戶機(jī)/服務(wù)器工作模式,服務(wù)器端啟動(dòng)守護(hù)進(jìn)程,等待客戶端的請(qǐng)求;服務(wù)器對(duì)應(yīng)客戶端的請(qǐng)求,派生子進(jìn)程與客戶進(jìn)程進(jìn)行數(shù)據(jù)通信,提供服務(wù)。服務(wù)和協(xié)議的區(qū)別與聯(lián)系?本次實(shí)驗(yàn)的協(xié)議過(guò)程(即客戶-服務(wù)器方式)是怎樣建立的?用哪那些服務(wù)?答:首先,協(xié)議的實(shí)現(xiàn)保證了能夠

10、向上一層提供服務(wù),使用本層服務(wù)的實(shí)體只能看見服務(wù)而無(wú)法看見下面的協(xié)議,協(xié)議是水平的。下面的協(xié)議對(duì)上面的實(shí)體是透明的 其次,協(xié)議是“水平的”即協(xié)議是控制對(duì)等實(shí)體之間通信的規(guī)則但服務(wù)是“垂直的”,即服務(wù)是由下層向上層通過(guò)層間接口提供的。另外,并非在一個(gè)層內(nèi)完成的全部功能都稱之為服務(wù),服務(wù)是上下的。只有那些能夠被高一層實(shí)體看得見的功能才能被稱之為“服務(wù)”TCP/IP應(yīng)用服務(wù)采用客戶機(jī)/服務(wù)器工作模式,服務(wù)器端啟動(dòng)守護(hù)進(jìn)程,等待客戶端的請(qǐng)求;服務(wù)器對(duì)應(yīng)客戶端的請(qǐng)求,派生子進(jìn)程與客戶進(jìn)程進(jìn)行數(shù)據(jù)通信,提供服務(wù)。(1)服務(wù)器(HostA)首先要啟動(dòng)應(yīng)用程序服務(wù)進(jìn)程(守護(hù)進(jìn)程Server),等待客戶端的請(qǐng)求

11、。(2)當(dāng)服務(wù)進(jìn)程Server接收到客戶端HostB的請(qǐng)求時(shí),派生一個(gè)子進(jìn)程(Child1)與HostB進(jìn)行交互,實(shí)現(xiàn)數(shù)據(jù)通信,同時(shí)守護(hù)進(jìn)程Server繼續(xù)等待客戶端的請(qǐng)求。(3)當(dāng)服務(wù)進(jìn)程Server接收到客戶端HostC的請(qǐng)求時(shí),派生一個(gè)子進(jìn)程(Child2)與HostC進(jìn)行交互,實(shí)現(xiàn)數(shù)據(jù)通信,同時(shí)守護(hù)進(jìn)程Server繼續(xù)等待客戶端的請(qǐng)求。本次實(shí)驗(yàn)客戶-服務(wù)器協(xié)議主要提供發(fā)送消息和接收消息的服務(wù)。本次實(shí)驗(yàn)的協(xié)議提供了什么服務(wù)?試想,用此協(xié)議還可以提供怎樣的服務(wù)?這種服務(wù)在自動(dòng)化學(xué)科領(lǐng)域的意義是什么?(1)簡(jiǎn)單的信息傳遞,即使用套接字處理消息的發(fā)送和接收。(2)處理文件的傳輸。傳輸都是基于文本流進(jìn)行的,協(xié)議提供了接收文本流和發(fā)送文本流的服務(wù),因此,可以進(jìn)行文本傳輸。以上兩種服務(wù),都是由程序員自定義進(jìn)行的。(3)在更高一層上,該協(xié)議還可以提供很多的高端服務(wù):對(duì)于自動(dòng)化的意義:TCP/IP協(xié)議不依賴于任何特定的計(jì)算機(jī)硬件或操作系統(tǒng),提供開放的協(xié)議標(biāo)準(zhǔn),即使不考慮Internet,TCP/IP協(xié)議也獲得了廣泛的支持。所以TCP/IP協(xié)議成為一種聯(lián)合各種硬件和軟件的實(shí)用系統(tǒng)。TCP/IP協(xié)議并不依賴于特定的網(wǎng)絡(luò)傳輸硬件,所以TCP/IP協(xié)議能夠集成各種各樣的網(wǎng)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論