




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、“TCP/IP協(xié)議及網(wǎng)絡(luò)編程技術(shù)”課程實(shí)驗(yàn)報(bào)告第11頁,共19頁局域網(wǎng)文件傳輸實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)名稱:實(shí)驗(yàn)?zāi)康模和ㄟ^編寫局域網(wǎng)內(nèi)文件傳輸?shù)墓ぞ撸煜せ赨DP的Socket編程,熟悉Win sock的相關(guān)內(nèi)容。對(duì)套接字編程有一定的理解和應(yīng)用。實(shí)驗(yàn)內(nèi)容:本小組最終結(jié)果實(shí)現(xiàn)的實(shí)驗(yàn)內(nèi)容:完成基本任務(wù)要求:輸入對(duì)方IP地址,對(duì)方如果存在,可以給對(duì)方發(fā)送文件。完成擴(kuò)展任務(wù)要求:1. 工具具有圖形交互界面;2. 局域網(wǎng)內(nèi)使用該工具的兩臺(tái)主機(jī)可以互相進(jìn)行文字通信;3. 自動(dòng)按照一定頻率掃描局域網(wǎng)內(nèi)其他開啟了該工具的主機(jī),并在界面上 用列表顯示出來;4. 傳輸文件和文字內(nèi)容時(shí),直接選擇界面上已經(jīng)顯示出來的存活主機(jī),
2、不 需要手動(dòng)輸入IP地址。實(shí)驗(yàn)準(zhǔn)備說明:操作系統(tǒng):Win dows XP開發(fā)語言:C+, MFC開發(fā)平臺(tái):Microsoft Visual C+ 6.0由于開發(fā)圖形界面時(shí)需要用到 MFC,因此對(duì)缺乏MFC編譯運(yùn)行環(huán)境的VC6 可能需要加載相應(yīng)的動(dòng)態(tài)鏈接庫 DLL文件。加載方法:將DLL文件置放于系統(tǒng)鏈接庫路徑。即:C:WINDOWSsystem32實(shí)驗(yàn)設(shè)計(jì)與開發(fā):程序設(shè)計(jì)思路:程序所采用基于 TCP/IP協(xié)議的Win sock編程原理,編程模 型采用客戶機(jī)/服務(wù)器(Client/Server)方式,為了方便使用,設(shè)計(jì)將客戶機(jī)和服 務(wù)器合而為一。在通信的時(shí)候主要可以分為兩個(gè)部分,一個(gè)部分是用于傳
3、送控制信息,例如 發(fā)送文件的請(qǐng)求,文件的名稱、大小等,由于這方面的數(shù)據(jù)量比較小,為了方便 起見采用了 MFC所提供的CSocket類的串行化技術(shù)來實(shí)現(xiàn);而另一個(gè)部分就是 文件的傳輸部分,對(duì)于文件的傳輸,由于數(shù)據(jù)量相對(duì)來說比較大,所以分別寫了 兩個(gè)線程,一個(gè)用于發(fā)送,一個(gè)用于接收。在添加附加功能聊天時(shí),將聊天相關(guān) 內(nèi)容作為小文件傳輸,并將其顯示在相應(yīng)的控件中。這兩個(gè)部分在具體實(shí)現(xiàn)的時(shí) 候分別建立有自己的套接字(Socket)o程序代碼內(nèi)容大體分為圖形界面和后臺(tái)交互兩個(gè)模塊,在最開始設(shè)計(jì)開發(fā)時(shí) 原本準(zhǔn)備以此作為分工,但實(shí)際圖形界面代碼較少,而且主要的復(fù)雜點(diǎn)在于事件 響應(yīng)和句柄綁定,比較容易解決,總
4、體工作量較少,因此圖形界面后來是共同討 論開發(fā),設(shè)計(jì)完成后根據(jù)具體的控件響應(yīng)分工相關(guān)聯(lián)的后臺(tái)交互代碼開發(fā)。1圖形界面:程序采用單一界面工作模式,因此所有代碼都集中于以FileTra nsfersDIg命名 的.h和.cpp文件中。這樣設(shè)計(jì)在一定程度上改善后期調(diào)試的復(fù)雜度。由于需要實(shí)現(xiàn)附加功能,最后圖形界面所用控件較多,并且每個(gè)控件都有響 應(yīng)的消息映射,統(tǒng)計(jì)內(nèi)容,整理如下表:表1控件響應(yīng)消息映射表控件ID關(guān)聯(lián)函數(shù)功能描述IDC_RADIO_SERVEROn RadioServer()服務(wù)端設(shè)置IDC_RADIO_CLIENTOn RadioClie nt()客服端設(shè)置IDC_BEGINOn Be
5、gi n()服務(wù)端為啟動(dòng)功能,客服端為連接功能IDC_DISCONNECTOn Disconnect()服務(wù)端為關(guān)閉功能,客服端為斷開功能IDC_SELECT_FILEOn SelectFile()選擇文件IDC_STOP_TRANSFERSOn StopTra nsfers停止傳輸IDC_TRANSFILE_RATIOOnTran sfileRatio文件傳輸模式IDC_CHAT_RA TIOOn ChatRatio聊天模式IDC_SEND_MESSAGEOnSen dMessage()發(fā)送聊天信息IDC_ALLIP_ONLINEOn Selcha ngeAllipO nlin e()獲取在
6、線服務(wù)器IDCANCELOnCan cel()退出程序另外還有些用于顯示相關(guān)內(nèi)容的控件,這里不再列舉2后臺(tái)交互:2.1.主要線程后臺(tái)交互代碼主要為相應(yīng)控件的響應(yīng)函數(shù)和線程函數(shù)。所有代碼中涉及了4個(gè)線程:_ScanReceiveThread _ScanDelieveThread _ListenThread, _SendThread具體功能列表如下:線程名功能_Sca nDelieveThread作為服務(wù)端時(shí)按一定時(shí)間間隔重復(fù)發(fā)送局域 網(wǎng)廣播包,為客戶端提供在線服務(wù)端IP地址_Sca nReceiveThread作為客戶端時(shí)重復(fù)監(jiān)聽局域網(wǎng)廣播包,獲得在線服務(wù)端IP地址_Liste nThread接
7、收點(diǎn)對(duì)點(diǎn)文件線程,重復(fù)監(jiān)聽獲取并接收獲取文件(聊天)信息鏈接_Sen dThread發(fā)送點(diǎn)對(duì)點(diǎn)文件線程,當(dāng)需要發(fā)送文件(聊天)信息時(shí)開啟_Sca nDelieveThread和_Scan ReceiveThread為廣播包套接字,核心在于設(shè)置套接字地址格式。核心代碼如下:_ScanDelieveThread :SOCKET sockClie nt = socket(AF_INET,SOCK_DGRAM,0);初始化套接字,注意格式SOCKADDR_IN addrSrv;addrSrv.sin_addr.S_ un .S_addr = hto nl (INADDR_BROADCAST);/ 設(shè)置
8、廣播地址addrSrv.sin_family = AF_INET;addrSrv.sin_port = hto ns(8000);設(shè)置端口BOOL bOpt = TRUE;setsockopt(sockClie nt, SOL_SOCKET, SO_BROADCAST, (char*)&bOpt, sizeof(bOpt);/設(shè)置套接字格式,尤其是第三個(gè)參數(shù):SO_BROADCASTZeroMemory(addrSrv.sin_zero,sizeof(addrSrv.sin_zero);bin d(sockClie nt, (SOCKADDR*)&addrSrv, sizeof
9、(SOCKADDR);/為套接字綁定固定的IP地址和端口,此處IP地址為廣播地址:255.255.255.255sen dto(sockClie nt,"sldkfjslfjslksdjfsdl",20,0,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR);/發(fā)送套接字,“ sldkfjslfjslksdjfsdl ”為發(fā)送消息,第五個(gè)參數(shù)比較重要closesocket(sockClie nt);/關(guān)閉套接字,此處比較重要,尤其是while(1)循環(huán)中ScanReceiveThread:char Buf100;/接收廣播包c(diǎn)har數(shù)組SOCK
10、ADDR_IN saRemote;/接收廣播包地址INT nF rmSize = sizeof(saRemote);/地址大小,固定SOCKET sockClie nt = socket(AF_INET,SOCK_DGRAM,0);初始化套接字SOCKADDR_IN addrSrv;/套接字地址WORD Port;接收端口格式addrSrv.sin_addr.S_ un .S_addr = hto nl(INADDR_ANY);/設(shè)置接收套接地址格式,此處為局域網(wǎng)內(nèi)任意地址addrSrv.sin_family = AF_INET;addrSrv.sin_port = hto ns(8000);
11、套接字端口,此處應(yīng)該和_ScanDelieveThread中套接字端口相同ZeroMemory(addrSrv.sin_zero,sizeof(addrSrv.sin_zero);bind(sockClient, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR);綁定 IP 地址和端口memset(Buf,0,sizeof(Buf);int n ErrCode = recvfrom(sockClie nt, Buf, 100, 0, (SOCKADDR *)(&saRemote), &n FrmSize);接收廣播包數(shù)據(jù),其中Buf接收信息,s
12、aRemote接收源地址的IP地址及端口信息,此處實(shí)際代碼應(yīng)該根據(jù)nErrCode有效性進(jìn)行判斷Port = ntohs(saRemote.sin_port);得出源地址端口信息Cstring IP = inet_ntoa(saRemote.sin_addr);/得出源地址 IP 地址由于此處_Sca nReceiveThread和_Sca nDelieveThread兩個(gè)進(jìn)程一直處于激活 狀態(tài),所以應(yīng)該設(shè)置while(1)或for(;)循環(huán),而且_ScanDelieveThread應(yīng)該對(duì)所得 到的IP地址進(jìn)行處理,代碼中進(jìn)入函數(shù) ScanOnlineIp(char *ipAddress)。S
13、canOn li nelp(char *ipAddress)功能有兩個(gè)主要功能:判斷當(dāng)前廣播包地址是 否為本機(jī)地址,判斷當(dāng)前廣 播地址是 否已添加。具體代 碼通過設(shè)置 一個(gè)vertor<cstring> Onlinelp 處理,代碼流程如下:if (conven tIP != localIP)/判斷是否為本機(jī)地址if (Onlinelp.empty()/vector為空,當(dāng)前無IP地址,添加操作 , elsefor (int ix=0;ix!=Onlinelp.size();+ix)循環(huán)遍歷 vector 值if (con ve ntlP=O nli nelpix)相等說明改地址已
14、經(jīng)添加,設(shè)置標(biāo)簽 exist =TRUE;if (!exist)/如果標(biāo)簽為假,執(zhí)行IP地址添加操作 , 而_ListenThread和_SendThread屬于固定IP地址套接字。核心代碼如下:Liste nThread:CSocket sockSrvr;if(!sockSrvr.Create(pDlg->m_wPort + PORT)/ 創(chuàng)建套接字 if(!sockSrvr.Liste n()開始監(jiān)聽 CSocket recSo;if(!sockSrvr.Accept(recSo)/接收連接 sockSrvr.Close();/關(guān)閉套接字_Sen dThread:/創(chuàng)建套接字CSoc
15、ket sockClie nt;if(!sockClie nt.Create()/ 創(chuàng)建套接字 CStri ng strIPAddress;UINT n Port;pDlg->m_psockClie nt->GetPeerName(strlPAddress, nPort);連接到服務(wù)器端if(!sockClie nt.Co nn ect(strIPAddress, pDlg->m_wPort + PORT) 調(diào)用主對(duì)話框類中的SendFile成員函數(shù)進(jìn)行文件的發(fā)送pDlg->Se ndFile(sockClie nt);2.2輔助類:2.2.1 CMessage類:上文
16、說過程序傳送控制信息的時(shí)候采用的是CSocket類的串行化技術(shù),這樣發(fā)送和接收網(wǎng)絡(luò)數(shù)據(jù)就像普通的數(shù)據(jù)串行化一樣簡單。因此封裝一個(gè)可以串行化的消息類是必要的,因此設(shè)計(jì)了這個(gè)類,后面消息的發(fā)送和接收只需使用流操作 符對(duì)緩沖區(qū)進(jìn)行存取就可以了。根據(jù)程序的需要,消息類CMessage的定義如下: class CMessage : public CObjectpublic:void Serialize(CArchive & ar);CMessage();CMessage(i nt n Type);CMessage(i nt nType, CStri ng strFileName, DWORD d
17、wFileSize);virtual CMessage();public:int m_n Type;CStri ng m_strFileName;DWORD m_dwFileSize;;其中,m_nType用于標(biāo)識(shí)消息的類型;m_strFileName為文件的名稱;m_dwFileSize為文件的大小。為了方便使用,對(duì)消息類的CMessage的構(gòu)造函數(shù)進(jìn)行了重載,CMessage(為默認(rèn)的構(gòu)造函數(shù),如果只是發(fā)送一般的控制信息可以 使用CMessage(int nType胸造函數(shù),當(dāng)需要發(fā)送文件名及大小的時(shí)候可以使用 CMessage( int nType, CStri ng strFileNa
18、me, DWORD dwFileSize 造函數(shù)。2.2.2. CListe nSocket 類該類主要負(fù)責(zé)監(jiān)聽管理的套接字。定義如下:class CClie ntSocket : public CSocketpublic:CClie ntSocket();virtual CClie ntSocket();CSocketFile* m_pFile;CArchive* m_pArchiveI n;CArchive* m_pArchiveOut;void In it();void Abort();BOOL Se ndMsg(CMessage* pMsg);void ReceiveMsg(CMess
19、age* pMsg);CClie ntSocket(CFileTra nsfersDIg* pdlgMai n);為重載的構(gòu)造函數(shù);m_pdlgMain為指向主對(duì)話框類 CFileTransfersDIg的指針。 public:virtual void On Receive(i nt n ErrorCode);/ Impleme ntati onprotected:CFileTra nsfersDIg* m_pdlgMa in;223 CClie ntSocket 類該類用于連接的管理,其創(chuàng)建的方法與CListe nSocket相似。定義略2.3自定義消息自定義一個(gè)消息WM_ACCEPT_TR
20、ANSFERS,用于當(dāng)文件接收方同意接收文 件且文件接收線程_ListenThread已經(jīng)準(zhǔn)備好接收文件是,發(fā)送一個(gè)信息給文件發(fā) 送方,說可以開始發(fā)送文件。第一步,需要在主窗口類 CFileTransfersDIg的實(shí)現(xiàn)文件FileTransfersDIg.cpp 的首部加入一句:#define WM_ACCEPT_TRANSFERS WM_USER + 100,定義一個(gè)宏。第二步,實(shí)現(xiàn)消息處理函數(shù)。該函數(shù)使用WPRAM和LPARAM參數(shù)并返回 LPESULT,其實(shí)現(xiàn)如下:LRESULT CFileTra nsfersDlg:O nAcceptTra nsfers(WPARAM wParam,
21、 LPARAM lParam)告訴對(duì)方文件請(qǐng)求被接受且準(zhǔn)備好接收CMessage* pMsg = new CMessage(ACCEPT);m_psockClie nt->Se ndMsg(pMsg);/設(shè)置一個(gè)ID為2的超時(shí)幾時(shí)器m_n Timer = SetTimer(2, 5000, NULL);return 0;第三步,在CFileTransfersDIg類定義中的AFX_MSG塊中說明消息處理函 數(shù),詳見類的定義。第四步,在FileTransfersDlg.cpp文件的在用戶類的消息塊中,使用 ON MESSAGE宏指令將消息映射到消息處理函數(shù)中,加入了如下一句: BEGIN_
22、MESSAGE_MAP(CFileTra nsfersDIg, CDialog)AFX_MSG_MAP(CFileTra nsfersDIg)ON_MESSAGE(WM_ACCEPT_TRANSFERS, On AcceptTra nsfers) /AFX_MSG_MAPEND MESSAGE MAP()2.4主要成員函數(shù)這里由于相關(guān)重要的成員函數(shù)代碼較長,不便于在報(bào)告中展示。這里只羅列 相關(guān)函數(shù)名和其具體功能。見下表:函數(shù)名具體功能GetLocalHostl nfo (CStri ng & strHostName, CStri ng & strlPAddress)獲得本機(jī)IP
23、地址函數(shù),在初始化顯示本機(jī)IP 地址和獲得在線IP地址時(shí)調(diào)用。GetError(DWORD error)獲取錯(cuò)誤信息,捕獲所用錯(cuò)誤信息Tran sfersFailed()傳輸啟動(dòng)錯(cuò)誤處理函數(shù)ProcessAccept()CListenSocket套接子類接收到連接請(qǐng)求時(shí) 的函數(shù)保證服務(wù)器端一次只能同一個(gè)客戶端存在連接ProcessReceive(CCIie ntSocket* pSocket)CClientSocket套接字類收到信息時(shí)的處理函數(shù)Sen dFile(CSocket &se nSo)發(fā)送文件函數(shù),該函數(shù) 在發(fā)送文件線程被調(diào)用ReceiveFile(CSocket &
24、;recSo)文件接收函數(shù),該函數(shù) 在文件接收線程中被調(diào)用具體的控件響應(yīng)函數(shù)此處不再重復(fù)羅列2.5程序流程退出r?啟動(dòng)程序,生成Dlg主界面_ 4 .選擇作為服務(wù)端/客戶端T1 服務(wù)端ib 選擇操作1客戶端啟動(dòng),等待客戶端連接*關(guān)閉選擇操作2選擇操作2退出選擇好在線IP,連接連接成功LJ選擇通訊模式,*聊天/文件傳輸連接成功選擇操作3文件傳輸,發(fā)送斷開連接,可以進(jìn)時(shí)選擇文件,接行選擇操作1,2收時(shí)選擇存放路徑聊天,寫好信息點(diǎn)擊發(fā)送程序界面及運(yùn)行結(jié)果:繼續(xù)相關(guān)操作,或者*選擇操作3<J1. 主界面:“TCP/IP協(xié)議及網(wǎng)絡(luò)編程技術(shù)”課程實(shí)驗(yàn)報(bào)告頁第15頁,共19:F地址:端口號(hào):明旳V|地
25、址設(shè)置界面,右上顯示本 機(jī)地址或選擇連接地址-|nl xl戶端功能口" 通訊模式選擇界面服務(wù)選擇介傳輸文件文件名:文件長度:0字節(jié)文件信息界面已收到:0宇節(jié)聊天信息發(fā)送按鈕文件傳輸進(jìn)度條選擇文件(£)退出© I2. 測(cè)試過程開啟局域網(wǎng)三臺(tái)機(jī)器,IP地址分別為10.61.0.75, 10.61.0.76, 10.61.0.77。測(cè)試內(nèi)容1:設(shè)置兩臺(tái)服務(wù)器,一臺(tái)客戶端,客戶端分別根據(jù)掃描IP地址跟兩臺(tái)服務(wù)器連接。檢驗(yàn)是否能夠掃描所有在線服務(wù)器IP,是否能夠正常連接。服務(wù)器 IP 為 10.61.0.75和 10.61.0.77,客戶端 IP 為 10.61.0.76,
26、測(cè)試操作:在三臺(tái)機(jī)器上分別啟動(dòng)程序,選擇服務(wù)器或客戶端。服務(wù)器端直 接點(diǎn)擊“啟動(dòng)”工作,客戶端點(diǎn)擊 Combobox選擇在線IP后,點(diǎn)擊“連接”。測(cè)試結(jié)果:1. 客戶端掃描在線IP:功能選擇r服務(wù)器蚩宦客戶端©-設(shè)置地址TF地址:(d 61, 0. 7610.61 0.75端口號(hào):|10.61.0 77結(jié)果分析:Combobox下拉顯示內(nèi)容為兩臺(tái)服務(wù)器IP, IP地址控件顯示本機(jī)IP地址。測(cè)試正確。2. 選擇服務(wù)器IP地址,進(jìn)行連接:測(cè)試結(jié)果:結(jié)果分析:選擇服務(wù)器10.61.0.75后,IP地址顯示當(dāng)前選中IP,點(diǎn)擊連接后, 連接按鈕變灰,斷開按鈕變亮。測(cè)試正確。3. 斷開當(dāng)前服務(wù)器
27、,重新連接其他服務(wù)器:測(cè)試結(jié)果:功能選擇廣服務(wù)器E)存客戶端©-設(shè)疊地址HF地址:lO GtO 7T三| | 10610 TT端口號(hào);結(jié)果分析:以上兩幅結(jié)果圖,第一圖顯示內(nèi)容為斷開和10.61.0.75服務(wù)器連接,第二圖顯示內(nèi)容為成功連接10.61.0.77服務(wù)器測(cè)試內(nèi)容2:設(shè)置兩臺(tái)客戶端,一臺(tái)服務(wù)端,檢驗(yàn)服務(wù)器是否進(jìn)行單一連接。客戶端 IP 為 10.61.0.75和 10.61.0.77,服務(wù)器 IP 為 10.61.0.76,測(cè)試操作:在三臺(tái)機(jī)器上分別啟動(dòng)程序,選擇服務(wù)器或客戶端。服務(wù)器端直 接點(diǎn)擊“啟動(dòng)”工作,客戶端10.61.0.75點(diǎn)擊Combobox選擇服務(wù)器端IP后,
28、點(diǎn) 擊“連接”。接著客戶端10.61.0.77重復(fù)客戶端10.61.0.75操作,查看結(jié)果。然后 客戶端10.61.0.75點(diǎn)擊“斷開”后客戶端10.61.0.77重復(fù)剛才操作查看結(jié)果。測(cè)試結(jié)果:10.61.0.75 先連:10.61.0.77 后連:| 功能選擇'廣朋務(wù)器CS)窗客戶端©|連接|設(shè)蚤地址 (,3 斷幵 onIP地址:|10.61 0.76-| 1C - 610761端口號(hào):阿5服務(wù)迭擇佑倍輸文件廠服10.61.0.75斷開連接后10.61.0.77再連:“TCP/IP協(xié)議及網(wǎng)絡(luò)編程技術(shù)”課程實(shí)驗(yàn)報(bào)告第18頁,共19頁結(jié)果分析:假設(shè)正確,一臺(tái)服務(wù)器只能跟一臺(tái)客
29、戶端進(jìn)行連接測(cè)試內(nèi)容3:測(cè)試服務(wù)端和客戶端聊天功能。服務(wù)端 IP為10.61.0.76,客戶 端 IP 為 10.61.0.77。測(cè)試操作:接測(cè)試內(nèi)容2服務(wù)端和客戶端正常連接后,服務(wù)端和客戶端都選 擇聊天模式。輸入聊天信息,點(diǎn)擊發(fā)送。查看結(jié)果。測(cè)試結(jié)果:U發(fā)送|Mi, T m 10. Gl. 0.76 a -i發(fā)送|結(jié)果分析:以上為四幅按時(shí)間順序執(zhí)行的結(jié)果圖:圖1表示選擇聊天模式后,聊天信息輸入文本框及發(fā)送按鈕變亮,圖2表示服務(wù)端在文本端輸入信息,未點(diǎn)擊發(fā)送圖3表示點(diǎn)擊發(fā)送后,服務(wù)端聊天信息輸入文本框清空,聊天信息顯示框顯 示剛剛發(fā)送的內(nèi)容,圖4表示客戶端對(duì)服務(wù)端聊天信息的回應(yīng)。由于服務(wù)端和客
30、戶端顯示內(nèi)容一樣,這里不再重復(fù)。測(cè)試結(jié)果表示功能正常。測(cè)試內(nèi)容4:測(cè)試服務(wù)端和客戶端聊天功能。服務(wù)端 IP為10.61.0.76,客戶端 IP 為 10.61.0.77。測(cè)試操作:接測(cè)試內(nèi)容3服務(wù)端和客戶端正常連接后,服務(wù)端和客戶端都選 擇文件傳輸模式。服務(wù)端點(diǎn)擊“選擇文件”,選擇好文件后,等待對(duì)方接受,客 戶端選擇好保存路徑后,開始文件傳輸。測(cè)試結(jié)果如下:文件傳輸方(服務(wù)端)測(cè)試結(jié)果:1i狀態(tài)文件名;使用胛匚實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)的文件任輸-txt交件長度:33463字節(jié)己發(fā)送:0宇節(jié)選擇文件停止僅輸Hj退出)|“TCP/IP協(xié)議及網(wǎng)絡(luò)編程技術(shù)”課程實(shí)驗(yàn)報(bào)告頁第20頁,共19聊天內(nèi)容1snoTo-3TS
31、f6a222011-03-JHi, Tin 10.61,0.762011-03-;Hi,10.61,0.77fNice to iHl,rm la. &1.0.7LBic電 t.0 專EE ¥???-11文件名:使用NIFC實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)的文件傳輸.諭t 文件長廈:33468宇節(jié)已發(fā)送:33468宇節(jié)選擇立件掘文件接收方(客戶端)測(cè)試結(jié)果:服務(wù)選擇金伎輸交件聊天內(nèi)容_11Ebsosr-FC 2011-03-27 CHi,Th lO.ai.O.TBhaoer-FC 2011-03-27 CHi, Im 10,61.0.77, Hica狀態(tài)文件名:使用川FC實(shí)現(xiàn)臣對(duì)點(diǎn)的文件傳輸七譏 文件長度:33468字節(jié)已收到:33468寧節(jié)蚤文件(?)停止倍輸1退出(Q)|結(jié)果分析:以上總過6幅圖也是按各自的時(shí)間順序得出。 總體時(shí)間順序流程 如下:圖1:表示服務(wù)端點(diǎn)擊“選擇文件”后聊天響應(yīng)控件變灰,但響應(yīng)內(nèi)容依然 存在。圖2:表示服務(wù)端選擇文件。傳輸文件為“使用 MFC實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)的文件傳 輸”。圖4:表示客戶端選擇文件保存路徑,路徑為“桌面”。圖3,圖5:分別表
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 賓館房間長期租賃合同
- 公寓樓裝飾工程施工合同
- 會(huì)計(jì)團(tuán)隊(duì)協(xié)作與管理模式計(jì)劃
- 挖掘職業(yè)潛能的方式計(jì)劃
- 廣告設(shè)計(jì)與發(fā)布作業(yè)指導(dǎo)書
- 電信行業(yè)智能化電話通信與網(wǎng)絡(luò)方案
- 幼兒園日用品采購合同
- 入伙協(xié)議合同協(xié)議
- 餐飲安全教育培訓(xùn)
- 豐富多彩的幼兒園班級(jí)活動(dòng)策劃計(jì)劃
- 2025-2030年中國阿爾茨海默癥藥物市場(chǎng)運(yùn)行狀況及發(fā)展?jié)摿Ψ治鰣?bào)告
- 2025年河南職業(yè)技術(shù)學(xué)院單招職業(yè)技能測(cè)試題庫必考題
- OBE理念背景下開展細(xì)胞生物學(xué)課堂教學(xué)互動(dòng)的探索實(shí)踐
- 2025年中國氫氧化鈣行業(yè)發(fā)展現(xiàn)狀及市場(chǎng)前景分析預(yù)測(cè)報(bào)告
- 二年級(jí)語文下冊(cè) 語文園地四 同步練習(xí)(含答案)
- 全套課件-《Visual-FoxPro-9.0項(xiàng)目開發(fā)案例教程》-李政
- 高效團(tuán)隊(duì):寧德時(shí)代的部門職責(zé)與協(xié)作模式
- 2024年鐵路貨運(yùn)承包經(jīng)營協(xié)議3篇
- 水利主要工序施工方案,控制及工程項(xiàng)目實(shí)施的重點(diǎn),難點(diǎn)和解決方案
- 人教版小學(xué)數(shù)學(xué)基礎(chǔ)知識(shí)
- RBA VAP 71 操作手冊(cè) 中文版 7
評(píng)論
0/150
提交評(píng)論