




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、局域網文件傳輸系統摘要 隨著國內外各公司企業的發展壯大和這些企業和公司在辦公中更加頻繁的使用網 絡作為公司信息交流的渠道, 局域網絡在人們的工作和生活中得到了充足的發展。 本課 題旨在培養學生利用現有技術進行實際動手的能力, 并使得學生能夠深入了解局域網在 文件傳輸方面的應用。局域網小到網內只有兩臺PC 機,大到一個企業的內部網絡,它們最主要的功能在于交流和傳輸文件,并且安全性高、速度快、準確性高。鑒于局域網有如上優點,開發一個方便快捷的局域網文件傳輸系統是很有意義的, 它在文件傳輸方面的高效準確將會提高企業的辦事效率, 為企業節省開支, 為家庭用戶 提供方便。關鍵詞 TCP/IP 協議; C
2、/S 結構; Windows Sockets 編程; VC+LAN File Transfer SystemABSTRACTNowadays, along with the domestic and foreign companies more and more frequently use the network as a channel for the exchange of information after their companies have full development, the local area network (LAN) has been fully develop
3、ed in people' s life andwork. This paper aims at training students to use existing technology to practical use, and makes the students to understand the application of LAN in the file transfer. LAN in scale vary from a network within only two PC to an enterprise 's internal network, their ma
4、in function is communication and file transfer, and with the advantage of high safty, high speed and high accuracy.In view of LAN 's these advantages, it is of great significance to develop a convenient and efficient LAN file transfer system. For its 'high speed and accuracy, it will improve
5、 enterprises'work efficiency and provide convenient for families.Keywords The TCP/IP Protocol; C/S Structure; Windows Sockets Programming; VC+目錄摘要 1Abstract 2第 1 章 緒論 51.1 選題背景 51.2國內外研究現狀 51.3課題研究的意義 51.4論文研究內容 5第 2 章 理論知識 72.1 TCP/IP 協議 72.1.1 網絡接口層 72.1.2 網絡層 72.1.3 傳輸層 82.1.4 應用層 82.2 C/S 架構
6、 82.2.1 C/S 架構的概念 82.2.2 C/S 架構的具體操作步驟 92.3 VC可視化編程環境92.4 Windows Socket 編程知識 1.02.4.1 Windows Socket 的發展 1.02.4.2 Windows Sockets 的分類 1.02.4.3 Windows Sockets API 1.02.5 本章小結 1.1軟件設計局域網文件傳輸系統程序設計局域網文件傳輸系統設計步驟設計客戶端所用到的函數設計服務器所用到的函數消息與消息函數功能按鈕與函數的對應關系軟件測試程序的安裝與運行在局域網內傳輸文件測試4.2.1 設置服務器4.2.2 設置客戶機并傳輸文件
7、本章小結結論參考文獻.......3.1.第3章 第4章第5章第 1 章 緒論1.1 選題背景隨著國內外各公司企業的發展壯大和這些企業和公司在辦公中更加頻繁的使用網 絡作為公司信息交流的渠道, 局域網絡在人們的工作和生活中得到了廣泛的發展。本課 題旨在培養學生利用現有技術進行實際動手的能力, 并使得學生能夠深入了解局域網在 文件傳輸方面的應用。局域網小到網內只有兩臺 PC 機,大到一個企業的內部網絡,它 們最主要的功能在于交流和傳輸文件,并且安
8、全性高、速度快、準確性高。鑒于局域網有如上有點,開發一個方便快捷的局域網文件傳輸系統是很有意義的, 它在文件傳輸方面的高效準確將會提高企業的辦事效率, 為企業節省開支, 為家庭提供 方便。 本論文所設計的局域網文件傳輸系統通過局域網內用戶的主機名、IP 地址和工作組的名稱確定了需要傳輸文件的雙方,進而以 C/S 模式通過 TCP/IP 協議實現雙方文件 的傳輸功能。1.2 國內外研究現狀大型局域網廣泛存在于國內外大型企業中, 而大部分企業還是通過 Internet 等等外 網或者 U 盤等硬件來傳輸文件, 只有少數企業針對該企業的特點設計了自己的文件傳輸 系統,總的來說在企業內部發展局域網文件
9、傳輸系統還有很大的發展空間。從 1969 年美國國防部高級研究計劃管理局 ( ARPA - - Advanced Research Projects Agency )建立了一個命名為 ARPAnet 的網絡開始到今日,網絡發展已走過足足 50 年 的時間,在這漫長的時間里,局域網文件傳輸系統也得到了相應的發展,現在正處于 高速發展階段,這從現今市面上流行的騰訊 QQ、飛鴿傳書等可見一斑??梢韵胂?,在 不久的將來, 以內部網絡為中心的資源共享系統將在全世界的信息流動中占有到舉足輕 重的地位。1.3 課題研究的意義本課題使學生了解局域網在實際工作和生活中的應用, 通過讓學生自己動手開發比 較簡單局
10、域網文件傳輸系統來強化學生的理論知識,培養學生的實際動手能力。另外, 本課題也使得學生對軟件開發有了一個感性的認識, 為我們在日后的工作中進一步設計 更復雜的系統打下了基礎。1.4 論文研究內容用 Microsoft visual C+ 6.0 軟件開發一個以 C/S 模式通過 TCP/IP 協議實現點到點文件傳輸的簡單的局域網文件傳輸系統軟件。該軟件傳輸的文件格式包括文本文檔(txt)、圖片(JPG和壓縮包(.rar)等等。該傳輸系統運行的操作系統平臺為Windows XP或者 Windows 7 ,在傳輸文件之前,需要將多臺 (>=2 臺)電腦通過路由器或者交換機用網 線連接在一起,
11、為各臺 PC機設置好IP并建立一個工作組。在這些電腦上分別安裝局域網文件傳輸系統并運行,實現文件傳輸的具體步驟如 下:1、在工作組內的所有PC機上運行該軟件,并將其中一臺PC機設置為服務器2、在設置為服務器的PC機上打開要發送的文件3、 輸入要接受文件的PC機的IP地址號、端口號,并連接服務器4、發送文件。第2章 理論知識包括 TCP/IP 協議, C/S這一章介紹開發局域網文件傳輸系統所涉及到的理論知識, 架構, VC 可視化編程環境, Windows Socket 編程。2.1 TCP/IP 協議TCP/IP 是 Transmission Control Protocol/Internet
12、 Protocol 輸控制協議 / 因特網互聯協議,又叫網絡通訊協議,這個協議是 議、 Internet 國際互聯網絡的基礎,簡單地說,就是由網絡層的的簡寫,中文譯名為傳 Internet 最基本的協 IP 協議和傳輸層的 TCP協議組成的。 TCP/IP 定義了電子設備(比如計算機)如何連入因特網,以及數據如何在它們之間傳輸的標準。 TCP/IP 是一個四層的分層體系結構。高層為傳輸控制協議, 它負責聚集信息或把文件拆分成更小的包。 低層是網際協議, 它處理每個包的地址部分, 使這些包正確的到達目的地。從協議分層模型方面來講, TCP/IP 由四個層次組成:網絡接口層、網絡層、傳輸 層、應用
13、層。 具體介紹如下2.1.1 網絡接口層物理層定義物理介質的各種特性: 1、機械特性; 2、電子特性; 3 、功能特性; 4 、 規程特性。數據鏈路層是負責接收 IP 數據報并通過網絡發送之,或者從網絡上接收物理幀, 抽出 IP 數據報,交給 IP 層。常見的接口層協議有: Ethernet 802.3 、 Token Ring 802.5 、X.25、Frame relay 、 HDLC、PPP ATM 等。2.1.2 網絡層網絡層負責相鄰計算機之間的通信。其功能包括三方面。( 1)、處理來自傳輸層的分組發送請求,收到請求后,將分組裝入IP 數據報,填充報頭,選擇去往信宿機的路徑,然后將數據
14、報發往適當的網絡接口。( 2)、處理輸入數據報:首先檢查其合法性,然后進行尋徑-假如該數據報已到達信宿機,則去掉報頭,將剩下部分交給適當的傳輸協議;假如該數據報尚未到達信宿, 則轉發該數據報。3)、處理路徑、流控、擁塞等問題。2.1.3 傳輸層傳輸層負責提供應用程序間的通信。其功能包括:一、格式化信息流;二、提供可 靠傳輸。為實現后者,傳輸層協議規定接收端必須發回確認,并且假如分組丟失,必須 重新發送。傳輸層協議主要是:傳輸控制協議 TCP(Transmission Control Protocol) 和用戶數據 報協議 UDP(User Datagram protocol) 。2.1.4 應
15、用層應用層負責向用戶提供一組常用的應用程序,比如電子郵件、文件傳輸訪問、遠程 登錄等。遠程登錄 TELNET 使用 TELNET 協議提供在網絡其它主機上注冊的接口。 TELNET會話提供了基于字符的虛擬終端。文件傳輸訪問FTP使用FTP協議來提供網絡內機器間的文件拷貝功能。應用層一般是面向用戶的服務。如 FTP、TELNET、DNS、SMTP、POP3。2.2 C/S 架構2.2.1 C/S 架構的概念C/S即Client/Server結構,是大家熟知的客戶機和服務器結構。它是軟件系統體系 結構,通過它可以充分利用兩端硬件環境的優勢,將任務合理分配到 Client 端和 Server 端來實
16、現,降低了系統的通訊開銷。目前大多數應用軟件系統都是 Client/Server 形式 的兩層結構,由于現在的軟件應用系統正在向分布式的 Web 應用發展, Web 和 Client/Server 應用都可以進行同樣的業務處理,應用不同的模塊共享邏輯組件;因此, 內部的和外部的用戶都可以訪問新的和現有的應用系統, 通過現有應用系統中的邏輯可 以擴展出新的應用系統。這也就是目前應用系統的發展方向。傳統的 C/S 體系結構雖然采用的是開放模式, 但這只是系統開發一級的開放性, 在 特定的應用中無論是 Client 端還是 Server 端都還需要特定的軟件支持。由于沒能提供 用戶真正期望的開放環境
17、, C/S 結構的軟件需要針對不同的操作系統系統開發不同版本 的軟件,加之產品的更新換代十分快, 已經很難適應百臺電腦以上局域網用戶同時使用。 而且代價高,效率低。C/S的優點是能充分發揮客戶端PC的處理能力,很多工作可以在客戶端處理后再提交給服務器。對應的優點就是客戶端響應速度快。缺點主要有以下幾個:1、只適用于局域網。而隨著互聯網的飛速發展,移動辦公和分布式辦公越來越普 及,這需要我們的系統具有擴展性。這種方式遠程訪問需要專門的技術,同時要對系統 進行專門的設計來處理分布式的數據。2、客戶端需要安裝專用的客戶端軟件。首先涉及到安裝的工作量,其次任何一臺 電腦出問題,如病毒、硬件損壞,都需要
18、進行安裝或維護。特別是有很多分部或專賣店 的情況,不是工作量的問題,而是路程的問題。還有,系統軟件升級時,每一臺客戶機 需要重新安裝,其維護和升級成本非常高。3、對客戶端的操作系統一般也會有限制2.2.2 C/S 架構的具體操作步驟客戶/ 服務器模式在操作過程中采取的是主動請求方式。1、服務器方的具體操作步驟如下:(1)、首先服務器方要先啟動,并根據請求提供相應服務。(2)、打開一個通信通道并告知本地主機,它愿意在某一端口上接收客戶請求。( 3 )、等待客戶請求到達該端口。(4)、接收到重復請求,處理該請求并發送應答信號。接收到并發服務請求,要 激活一新進程來處理這個客戶請求。新進程處理此客戶
19、請求,并不需要對其他請求做出 應答。服務完成后,關閉此進程與客戶的通信鏈接,并終止該進程。( 5 )、返回第二步,等待另一客戶請求。( 6 )、關閉服務器。2 、 .客戶方的主要操作步驟如下:(1)、打開一通信通道,并鏈接到服務器所在主機指定端口。(2)、向服務器發服務請求報文,等待并接收應答;繼續提出請求。(3)、請求結束后關閉通信通道并終止。2.3 VC 可視化編程環境在 Microsoft Visual C+ 6.0 開發環境 Developer Studio 是在 Windows 98/2000/XP/7 環境下運行的一套集成工具,由文本編輯、資源編輯器、項目建立工 具、優化編輯器、增
20、量連接器、源代碼瀏覽器、集成調試器等組成。Visual C+ 6.0 的軟、硬件配置需求如下:1、 操作系統: Windows 98 、 Windows2000 、 Windows XP 或者 Windows 7及更高版本。2、內存:根據不同操作系統設定,最好在 128M 以上。3、硬盤:最小需要 300MB 以上空間。4、 CD-ROM 驅動器(用于聯機信息 )。2.4 WINDOWS SOCKET 編程知識2.4.1 WINDOWS SOCKET 的發展在 Intel 、Microsoft 、Sun、SDI、Informix 、 Novell 等公司的大力支持下,Win dows Sock
21、et (以下簡稱 Win Sock)從1991年的1.0版發展到1996年的2.2版。如 今 WinSock 已經成為 Windows 網絡編程的標準。2.4.2 W INDOWS SOCKETS 的分類Win Sock編程分為同步(Sy nc)和異步(Async)。同步方式指的是發送方不等接收 方響應,便接著發下一個數據包得通信方式。同步方式邏輯清晰,編程專注于應用, 在搶先式的多任務操作系統中 (Win NT、Win 2000),采用多線程方式效率基本達到異 步方式的水平。而異步指發送方發出數據以后,等收到接收方發回的響應, 才發出下一 個數據包的通信方式。阻塞套接字是指執行此套接字的網絡
22、調用時, 直到成功才返回, 否則一直阻塞在此 網路調用上,比如調用 recv() 函數讀取網路緩沖區中的數據,如果沒有數據到達,將一 直用 recv() 這個函數調用上,知道讀到一些數據,此函數才返回;而非阻塞套接字是指 此套接字的網絡調用時,不管是否執行成功,都立即返回。比如調用 recv() 函數讀取網 絡緩沖區中的數據,不管是否讀到數據都立即返回,而不會一直掛在此函數調用上。在 實際 Windows 網絡通信軟件中,異步非阻塞套接字是用的最多的。平常所用的 C/S 結 構軟件用到的就是異步非阻塞模式的。2.4.3 W INDOWS SOCKETS APIWindows提供了一系列的 AP
23、I來支持Sockets,主要包括兩類,一類是 berkeley類 型的函數,另一類是已經認可的作為 Windows Sockets 2 的一部分的 Windows 特殊的 擴展函數。下面對一些常用的 Windows Sockets API 函數進行簡單說明:1 、 socket() :創建一個 Socket。所有的通信在建立連接之前都要創建一個Socket,該函數的功能與文件操作中的fopen 類似。2 、 bind() :為創建的 Socket 指定通訊對象。成功建立 Socket 之后,就應該選定通信的對象。首先是自己的程序需要與網絡上 的哪臺計算機通話;其次,在多任務的系統下,該臺計算機
24、可能會有幾個程序在工作, 必須指出與那個程序通信。 前者可以通過 Intenet 的網絡 IP 地址來確定, 而后者就需要 指出端口號, 用端口號來表示同一臺計算機上不同的應用程序, 可以從 0-65536 之間任 選, 不同功能的應用程序使用不同的端口號,這樣一臺計算機上可以有幾個程序同時使用一個 IP 地址而互不干擾。3、 listen() :設置等待連接狀態。對于服務器的程序,當申請到 Socket,并制定通信對象為INADDR-ANY之后,就 應該等待一個客戶機的程序來要求連接。而 listen() 就是把一個 Socket 設置這種狀態的 函數。4、accept() :接收請求連接。
25、當沒有連接請求時,對于阻塞方式,就進入等待狀態,直至有一個請求到達為止。5、connect() :主動提出請求連接。以上的 bind() 、listen() 、和 accept() 函數一般都用于服務程序,屬于被動等待的函 數;對于客戶端,要主動提出連接請求,應使用 connect() 函數。6、sent()/recv(): 發送、接受數據。7、connect() :直接通信。8、closesocket(SOCKET s):通信結束,關閉指定的 Socket。2.5 本章小結這一章所介紹的 TCP/IP 協議、編程的相關知識是下一章所展示的軟件的編寫基礎, 只有在這一章的理論指導下, 軟件的編
26、寫才能合乎實際, 才能最終實現在局域網內傳輸 文件。第3章軟件設計在第三章中展示了用局域網文件傳輸系統,并成功傳輸了一個文件,這一章將對程 序內部的細節予以介紹。該局域網文件傳輸系統使用VC+為編程語言,編程軟件為Microsoft Visual C+,使用對話框為該軟件的編程框架,其中用到了C+標準庫函數和MFC類庫,在并將其轉化為自己所需要的功能函數。客戶機和服務器的信息流如圖4-1所示:3.1局域網文件傳輸系統程序設計局域網文件傳輸系統的主要功能是建立與服務器的連接,向服務器發送數據,并且能夠接收由服務器傳送而來的數據。局域網文件傳輸系統如圖3-2所示:闋 L inFil-Ti,in 十
27、-1局域闞文件播輸狂地址:| 192 ? 163 . 0:I端口號:; 阿爭要傳輸的文件路徑C; UsarsgaQwaiDaskt opFil«打開文件 |設置威服務器|祐輸文件|確走取消I3.2局域網文件傳輸系統設計步驟(1)創建一個基于對話框的應用程序,在對話框中添加IP地址、Edit Box、Progress Bar等控件,如圖3-3所示:09 L -iiFikTi iiv.-frer局域網文件鶴輸if 地址:i:端口號:I需要鶴輸的文件路徑:I打開文件I設置感朋勢器傳輸文件I確定I取消I話框為對話框中的控件命名或關聯數據。如圖3-4所示:(3)在對話框類的頭文件中引用win
28、sock2.h頭文件,并導入 ws2_32.lib 庫文件。#include ” winsock2.h ”#pragma comment(lib, ” ws2_32.lib ” )(4)在應用程序的Ini tI nsta nee方法中初始化逃接字。WSADATA wsd;WSAStartup(MAKEWORD(2,2), &wsd);(5)在對話框的OnitDialog 方法中創建套接字。M_Clie nt=socket ( AF_INET,SOCK_STREAM,0;(6)在對話框類中添加成員函數CStri ngm_FileName; /傳送的文件名稱BOOLm_lsReveived
29、; /是否接收數據CStringm_ReceiveFile; /接收的文件名稱DWORDm_FileSize; /接收的文件大小DWORDm_FileLen ; /接收的文件長度CServerSocket* m_pServerSock; /接收文件套接字CServerSocket* m_ServerSock;CClientSocket* m_pSendSock; /發送文件套接字CFilem_File; /保存接收的文件BOOLm_Send; /是否開始發送數據BOOLm_SendNext; /是否繼續發送數據DWORDm_SendNum; /記錄當前發送的次數CFilem_SendFile;
30、 /發送的文件DWORDm_SendLen; /記錄已經發送的文件長度DWORDm_SendFileLen; /發送文件的長度CStringm_IP; /本機 IPBOOLm_Received; /判斷是否接收到對方的回應信息BOOLm_SendFinished;/發送是否完成intm_Count;(7)向對話框類中添加 AcceptConnection 方法,用于接受客戶端套接字的連接Void LANFileTransfer:AcceptConnect()M_serverSock->Close();M_pServerSock->Accept(*m_ServerSock);(8)處
31、理”設置成服務器”按鈕的單擊事件,創建服務器,并設置設置套接字接收數據時 觸發的消息。Void CLanFileTransfer: OnSetServer()Sockaddr_in serveraddr;UpdateData(TRUE);Serveraddr.sin_family=AF_INET;Serveraddr.sin_port=htons(m_port);Serveraddr.sin_addr.S_un.S_addr=inet_addr(m_IP);If(connect(m_client,(Sockaddr*)&serveraddr,sinzeof()serveraddr)!=
32、0)MeesageBox(“ connectFail! ” )Return;ElseMessageBox(“ Connected! ”);WSSAAsyncSelect(m_client,m_hWnd,1000,FD_READ);CString str,Info;m_path.GetWindowText(str);info.Format( “%s %s ” ,str, ”It 's allowed to Transfer file InLanFile! ” );int i=send(m_Client,Info.GetBuffer(0),info.GetLength(),0);(9) 處
33、理“發送”按鈕的單擊事件,向服務器發送數據。Void CLanFileTransfer: void CTransFileDlg:SendFileData()m_Send=TRUE;m_SendNext = TRUE;m_Received = TRUE;char data100;memset(data,0,100); m_SendNum +=1;獲得對方的應答信息發送文件完成m_pSendSock->Receive(data,100); /CString rdata = data;if (m_SendLen>=m_SendFileLen) /m_Send = FALSE; m_Sen
34、dNext = FALSE; m_SendFile.Close(); m_pSendSock->Close(); m_pSendSock->Create(CLIENTPORT); MessageBox(" 發送完成 ");return;if (m_SendLen=0)&&(rdata=" 取消 "m_Send = FALSE; m_SendNext = FALSE; m_SendFile.Close(); m_pSendSock->Close(); m_pSendSock->Create(CLIENTPORT);M
35、essageBox(" 對方取消了文件接收 ");return;char* membuf= (char*)LocalAlloc(LMEM_FIXED,MAXSENDNUM); memset(membuf,0,MAXSENDNUM);int result;if(m_SendLen<m_SendFileLen)&&(m_SendLen+MAXSENDNUM)>m_SendFileLen) m_SendFile.ReadHuge(membuf,m_SendFileLen-m_SendLen);result = m_pSendSock->Send(
36、membuf, m_SendFileLen-m_SendLen);if (result =SOCKET_ERROR)m_Send = FALSE;m_SendNext = FALSE;m_SendFile.Close();m_pSendSock->Close();m_pSendSock->Create(CLIENTPORT);LocalFree(membuf);KillTimer(1);MessageBox(" 發送失敗 ");return ;m_SendLen =m_SendFileLen;elsem_SendFile.ReadHuge(membuf,MAXS
37、ENDNUM);result = m_pSendSock->Send(membuf, MAXSENDNUM);if (result =SOCKET_ERROR)m_Send = FALSE;m_SendNext = FALSE;m_SendFile.Close();m_pSendSock->Close();m_pSendSock->Create(CLIENTPORT);LocalFree(membuf);KillTimer(1);MessageBox(" 發送失敗 ");return;LocalFree(membuf);m_SendLen +=MAXSEN
38、DNUM;(10 )向對話框中添加 ReceiveData 方法,用于接收從服務器傳來的數據。Void LANFileTransfer:ReceiveData()VOID* BUFFER = ( VOID*)L OCALALLOC(LMEM_FIXED,MAXSENDNUM+1);IF ( M_I SREVEIVED) / 第一次接收數據 , 獲取接收的文件信息CHAR* FILEINFO = ( CHAR*)L OCALALLOC(LMEM_FIXED,MAX_PATH+4);MEMSE(TFILEINFO,0,MAX_PATH+4);INT LEN = M_SERVERSOCK->R
39、ECEIVE( FILEINFO,MAX_PATH+4); M_RECEIVEFILE .F ORMA(T"%S", FILEINFO); / 記錄接收的文件名 CHAR* TEMP = FILEINFO ;WHILE ( TEMP0 !=0)TEMP+=1;TEMP+=1;M_FILE SIZE = ATOI ( TEMP); / 記錄接收的文件大小LOCALFREE( FILEINFO);M_FILELEN = 0;CSTRING NAME= GETFILE NAME( M_RECEIVEFILE);IF (MESSAGBEOX(" 是否接收數據 ?"
40、;," 提示 ",MB_YESNO)=IDYES) BROWSEINFBOI NFO;BI NFO. HWNODWNER= M_HWND;BI NFO. PIDLROOT = NULL;CHAR FILENAMEMAX_PATH;CHAR DIRMAX_PATH;MEMSE(TFILENAME,0,MAX_PATH);MEMSE(TDIR,0,MAX_PATH);BI NFO. PSZDISPLAYNAME = FILENAME;BI NFO. LPSZTITLE =" 請選擇目的路徑 "BI NFO. ULFLAGS =BIF_BROWSEINCLUD
41、EFILES|BIF_RETURNFSANCESTORS|BIF_RETURNONLYFSDIRS|BIF_BROWS EFORCOMPUTER;BI NFO. LPARAM =NULL;BI NFO. LPFN =NULL;BI NFO. I I MAGE= 0;LPITEMIDLIST LPLIST = SHBROWSFEORFOLDER(&BI NFO);CSTRING FILEDIR;IF (SHGETPATHFROMIDLIST(LPLIST, DIR)M_FILE.A BORT();FILEDIR = DIR;FILEDIR += ""M_FILE .O
42、 PEN( FILEDIR+NAME,CFILE : MODCEREATE|CF ILE : MODWERITE);M_I SREVEIVED = FALSE; / 文件信息接收結束M_SERVERSOCK->SEND("1111",4);LOCALFREE( BUFFE)R;RETUR;NELSE / 拒絕接收文件M_FILE .C LOSE();LOCALFREE( BUFFE)R;M_SERVERSOCK->SEND(" 取消 ",4);M_SERVERSOCK->CLOSE();M_I SREVEIVED = TRUE;RETU
43、R;NELSEL OCALFREE( BUFFER);M_SERVERSOCK->SEND(" 取消 ",4);M_SERVERSOCK->CLOSE();M_I SREVEIVED = TRUE;RETUR;NELSE / 開始接收數據 INT FILELEN = M _SERVESROCK->RECEIVE( BUFFER,MAXSENDNUM+1);IF ( FILELEN=SOCKET_ERROR) M_I SREVEIVED = TRUE;M_FILE .C LOSE();M_SERVERSOCK->CLOSE();LOCALFREE( B
44、UFFE)R;MESSAGBEOX(" 數據接收錯誤 ");RETUR;NM_FILELEN += FILELEN;M_FILE .WRITEHUGE( BUFFER, FILELEN);LOCALFREE( BUFFE)R;IF ( M_FILE LEN>=M_FILESIZE) / 接收完成 M_FILE .C LOSE();M_SERVERSOCK->SEND(" 結束 ",4);M_I SREVEIVED = TRUE;M_SERVERSOCK->CLOSE();MESSAGBEOX(" 接收完成 ");EL
45、SEM_SERVERSOCK->SEND("1111",4);3.3 設計客戶端所用到的函數(1)FileOpen() 打開文件對話框, 用來獲取文件路徑, 并將其路徑顯示文件路徑編 輯框中。文件路徑編輯框中。( 2)OnFileTransfer() 通過設置好了的 IP 地址和端口號, 該函數將實現文件從客戶 機到服務器文件的傳輸。( 3)InitAndConnet(HWND hwnd,UINT Port,CString strserver) 這個函數用來創建套 接字,通過界面上輸入的 IP 地址連接服務器。(4) Connect() 連接服務器函數。( 5 ) C
46、loseSocket 關閉一個 Socket 。3.4 設計服務器所用到的函數(1)OnSetServer() 這個函數用來創建服務器線程,并偵聽局域網絡中接發文件的 請求。(2)Accept() 用來接受客戶機的連接請求。(3) Listen() 這個函數用來將 Sokket 設置成連接等待狀態。( 4 ) CloseSocket() 關閉一個 Socket。3.5 消息與消息函數#define SER_MESSAGE WM_USER +100#define SER_MESSAGE WM_USER +101Afx_msg LRESULT OnServerMessage(WPARAM wPar
47、am,LParam lParam)Afx_msg LRESULT OnClientMessage(WPARAM wParam,LParam lParam)afx_msg void OnSysCommand(UINT nID, LPARAM lParam); 這個函數是系統命令響 應函數afx_msg void OnPaint(); 這個函數是系統界面構建函數afx_msg HCURSOR OnQueryDragIcon(); 這個函數是消息隊列函數afx_msg void OnOpenFile(); 這個函數負責構建文件打開對話框,并使傳輸文件進入 準備狀態afx_msg void OnSetServer(); 這個函數用來創建服務線程,偵聽網絡中的消息afx_msg void OnFileTransfer(); 這個函數用來傳輸文件3.6 功能按鈕與函數的對應關系ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTTON
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 科室一級護理質控的意義
- 希沃課件播放指南
- 小長假收心教育主題班會
- 新形勢下醫院思想文化工作研究
- 套管培訓大綱
- 綠色出行倡導者司機雇傭合同范本
- 財務顧問保密協議及企業財務診斷與改善合同
- 白酒品牌授權生產及銷售合作協議
- 工業園區廠房拆除及搬遷補償合同
- 城市公交車輛特許經營權承包合同
- 陜西省安康市教育聯盟2023-2024學年高一下學期期末考試數學試卷
- 2023-2024學年景德鎮市珠山區數學五年級第二學期期末監測試題含解析
- 小鎮文旅康養項目可研報告【健康養老】【旅游康養】
- EHS專項施工EHS管理組織機構
- 發電廠機組優化調度與運行控制策略
- wedo2完整版本.0第一課拉力小車
- 珠寶行業市場競爭與監管研究
- 會員經理培訓課件
- 高中政治必修三政治與法治考點專練選擇題100題含答案詳解
- 中城廉江上閣垌180MW農光互補項目(升壓站)環境影響報告表
- 試卷模擬丨北師大版數學三年級下冊期末測試卷(二)(含答案)
評論
0/150
提交評論