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

正文內(nèi)容

文件傳輸協(xié)議的c語言實現(xiàn)-展示頁

2025-06-08 22:04本頁面
  

【正文】 ************************/int main(int argc, char *argv[]) { struct sockaddr_in SLocalAddr。int smdfun(SOCKET h_NewSocket)。int spwdfun(SOCKET h_NewSocket)。int sgetfun(SOCKET h_NewSocket)。int iSynError=1。 char path[80]=。SOCKET h_NewSocket。char SendBuffer[80],RecvBuffer[80]。5程序代碼 服務(wù)器端程序文件/*********************************************************************文件名: 說明: 簡單的ftp服務(wù)器端程序文件,包含main函數(shù)及get、put等命令處理函數(shù)。此后,主程序從新的Socket中讀取命令,通過字串比較識別命令,若發(fā)現(xiàn)是quit命令,則關(guān)閉當前連接,準備接收下一個連接;若不是quit命令,則轉(zhuǎn)移到相應(yīng)的命令處理函數(shù),處理完畢后繼續(xù)在該Socket上讀取命令并進行處理。各命令處理函數(shù)的實現(xiàn)請參見源代碼。用戶輸入命令后,scanf函數(shù)返回,通過字符串比對函數(shù)strncmp識別命令,并調(diào)用相應(yīng)的命令發(fā)送函數(shù),若輸入的是quit命令,客戶端程序退出??蛻魴C和服務(wù)器的命令格式約定為“命令字$路徑名/文件名”,“命令字$路徑名/文件名”??蛻舳酥С諨IR(遠端文件夾查詢)、GET(文件下載)、PUT(文件上傳)、PWD(遠端當前路徑查詢)、CD(遠端當前路徑設(shè)置)、MD(遠端文件夾創(chuàng)建)、DEL(遠端文件刪除)等7個常用FTP命令。(7)closesocket( )函數(shù)網(wǎng)絡(luò)通信任務(wù)完成后,利用本函數(shù)釋放套接字占用的所有資源。至于原來那個監(jiān)聽套接字,它仍然用于接受其他客戶機連接,繼續(xù)處于監(jiān)聽模式。如果已有連接請求到來,該函數(shù)會返回一個新的套接字描述符,它對應(yīng)于已經(jīng)接受的那個客戶端連接。(4)listen( )函數(shù)調(diào)用listen( )函數(shù)對服務(wù)器上套接字啟動監(jiān)聽,即允許客戶連接請求開始排隊。bind ( )函數(shù)通過給一個未命名套接字分配一個本地名字(主機地址/端口號)來為套接字建立本地捆綁。服務(wù)進程總是先于客戶進程啟動,服務(wù)進程和客戶進程調(diào)用socket() 函數(shù)創(chuàng)建套接字。在應(yīng)用程序關(guān)閉套接字后,還應(yīng)調(diào)用WSACleanup( ),釋放資源。下面對Winsock 2提供的主要接口函數(shù)逐一進行介紹。通信結(jié)束時,服務(wù)器可以采用Closesocket函數(shù)釋放套接字,并可調(diào)用WSAClearup釋放Winsock DLL。在服務(wù)器端,先調(diào)用WSASartup函數(shù)進行初始化,初始化完成后調(diào)用Socket函數(shù)創(chuàng)建一個Socket s,再調(diào)用bind函數(shù)將該套接字綁定到某個特定端口,接下來調(diào)用Listen函數(shù)啟動監(jiān)聽并調(diào)用Accept函數(shù)接收客戶連接,若客戶連接請求未及時到達,則Accept函數(shù)處于阻塞狀態(tài)。默認情況下,這些I/O操作工作于阻塞模式。若要獲取的資源還沒有到達(如:接收緩沖區(qū)中沒有數(shù)據(jù)提供給recv函數(shù)),在阻塞模式下,執(zhí)行I/O操作的Winsock函數(shù)在I/O操作完成前會一直等待下去,不會立即返回;而在非阻塞模式下,該函數(shù)不管I/O操作有沒有完成都會立即返回,若未完成一般會返回錯誤碼WSAWOULDBLOCK,意味著必須重新進行嘗試。原始套接字(SOCK_RAW)可以用作對底層協(xié)議(如IP或ICM)的直接訪問。流套接字是面向連接的,它提供雙向的、有序的、無差錯、無重復(fù)并且無記錄邊界的數(shù)據(jù)流服務(wù),適用于處理大量數(shù)據(jù),提供可靠的服務(wù)。和其他系統(tǒng)資源一樣,操作系統(tǒng)為套接字分配一個唯一的ID(在Windows中被稱作句柄)。一個套接字包含五個基本元素:協(xié)議類型、本地IP地址、本地端口、遠端IP地址和遠端端口。物理通信介質(zhì)是指網(wǎng)卡驅(qū)動芯片及其外圍電路,完成鏈路層數(shù)據(jù)幀的封裝/解封、發(fā)送/接收等功能。鏈路層協(xié)議ARP和RAR),該模塊的相關(guān)功能以動態(tài)鏈接庫的形式被應(yīng)用程序調(diào)用。Winsock與windows操作系統(tǒng)的關(guān)系如圖ChpNum1所示。Winsock(Windows Sockets API)是從Sockets移植過來的TCP/IP編程的低級Windows API。Windows操作系統(tǒng)具有TCP/IP協(xié)議棧,應(yīng)用程序可通過Winsock API函數(shù)的調(diào)用實現(xiàn)端到端透明數(shù)據(jù)鏈接的建立。客戶機程序接收到這個文件,將其存放在用戶目錄中。用戶通過客戶機程序向服務(wù)器程序發(fā)出命令請求,服務(wù)器程序執(zhí)行用戶所發(fā)出的命令,并將執(zhí)行的結(jié)果返回到客戶機。3關(guān)鍵技術(shù) 文件傳輸協(xié)議介紹FTP 是File Transfer Protocol(文件傳輸協(xié)議)的英文簡稱,用于Internet上的控制文件的雙向傳輸。 2 設(shè)計準備(1)連入同一局域網(wǎng)的PC,每人一臺。第ChpNum章 文件傳輸協(xié)議的C語言實現(xiàn)1設(shè)計目的本設(shè)計旨在利用Winsock (File Transfer Protocol,文件傳輸協(xié)議)的客戶端和服務(wù)器端程序。通過完成此設(shè)計,了解Winsock API函數(shù)調(diào)用方法和一般網(wǎng)絡(luò)應(yīng)用程序的編程方法,理解FTP協(xié)議,掌握C語言設(shè)計FTP協(xié)議軟件的基本技術(shù),為將來開發(fā)其他通信協(xié)議軟件打下堅實基礎(chǔ)。(2)PC裝有Windows操作系統(tǒng)、Visual C++ 。在實現(xiàn)的層面上,F(xiàn)TP又可理解為一個可用于文件傳輸?shù)目蛻魴C/服務(wù)器系統(tǒng),該系統(tǒng)包括客戶機端程序和服務(wù)器端程序,客戶端和服務(wù)器端通信規(guī)則為FTP協(xié)議。比如說,用戶發(fā)出一條命令,要求服務(wù)器向用戶傳送某一個文件的一份拷貝,服務(wù)器會響應(yīng)這條命令,將指定文件送至用戶的機器上。在通信協(xié)議的分層模型中,文件傳輸協(xié)議是在TCP(Transmission control Protocol,傳輸控制協(xié)議)之上的一個應(yīng)用層協(xié)議,應(yīng)用程序之間的通信需要用到傳輸層提供的字節(jié)流透明無誤傳輸服務(wù)。 Winsock API介紹 因特網(wǎng)(Internet)最初是基于Unix的,而Sockets(套接字)是Unix第一個支持TCP/IP協(xié)議棧的網(wǎng)絡(luò)API, BSD版Unix推出,常被稱為Berkeley sockets(伯克利套接字)。從Windows 。操作系統(tǒng)實現(xiàn)了TCP/IP協(xié)議棧,(包括傳輸層協(xié)議TCP及UDP;網(wǎng)絡(luò)層協(xié)議IP、ICMP及IGMP。操作系統(tǒng)接受網(wǎng)卡驅(qū)動程序的注冊,網(wǎng)卡驅(qū)動程序本質(zhì)上是一套控制網(wǎng)卡硬件收發(fā)報文的函數(shù),也是以動態(tài)鏈接庫的形式被調(diào)用。圖ChpNum1 Winsock與操作系統(tǒng)的關(guān)系套接字可看作是不同主機間的進程進行雙向通信的虛擬管道端點:網(wǎng)絡(luò)中兩臺主機各自在自己機器上建立通信的端點套接字,然后使用套接字進行數(shù)據(jù)通信。在操作系統(tǒng)中,套接字是一種系統(tǒng)資源,應(yīng)用程序使用時應(yīng)向操作系統(tǒng)申請或注冊,使用結(jié)束后應(yīng)用程序應(yīng)釋放該該套接字。根據(jù)網(wǎng)絡(luò)通信的特征,套接字分為三類:流套接字(SOCK_STREAM)、數(shù)據(jù)報套接字(SOCK_DGRAM)和原始套接字(SOCK_RAW)。數(shù)據(jù)報套接字是無連接的,它支持雙向的數(shù)據(jù)傳輸,具有開銷小、數(shù)據(jù)傳輸效率高的特點,但不保證數(shù)據(jù)傳輸?shù)目煽啃?、有序性和無重復(fù)性,適合少量數(shù)據(jù)傳輸、以及時間敏感的音/視頻等多媒體數(shù)據(jù)傳輸。Winsock網(wǎng)絡(luò)應(yīng)用程序利用API 函數(shù)(如accept、send、recv等函數(shù))進行I/O操作時有阻塞和非阻塞兩種模式。阻塞模式與非阻塞模式比較,從編程角度來說,前者更便于使用,但從程序運行的效率來說,由于阻塞調(diào)用后會使得所在的線程(如果是主線程那么就是整個程序)等待在該I/O操作上,因此后者效率更高。在阻塞模式下使用Winsock 2的API庫函數(shù)進行數(shù)據(jù)報套接字編程的過程如圖ChpNum2所示。Accept函數(shù)為客戶端的連接請求創(chuàng)建一個新的套接字S1,在以后的通信中,服務(wù)器利用套接字s1與客戶端進行數(shù)據(jù)雙向傳輸??蛻魴C是連接的請求的發(fā)起者,在創(chuàng)建Socket之后直接通過調(diào)用Connect發(fā)起連接請求,成功后即可以利用該Socket進行雙向通信了。 圖ChpNum2 基于TCP的網(wǎng)絡(luò)應(yīng)用程序(1)WSAStartup()函數(shù)和WSACleanup()函數(shù)由于Winsock ,所以必須先調(diào)用WSAStartup() ,協(xié)商Winsock的版本支持,并分配必要的資源。(2)socket()函數(shù)服務(wù)進程和客戶進程在通信前必須創(chuàng)建各自的套接字,然后才能用相應(yīng)的套接字進行發(fā)送、接收操作,實現(xiàn)數(shù)據(jù)的傳輸。(3)bind( ) 函數(shù)當用socket( )創(chuàng)建套接字后,它便存在于一個名字空間(地址族)中,但并未賦名??蛻舳艘话汶[式地向操作系統(tǒng)請求一個隨機的未使用過的臨時端口號,跟自己的IP地址一起,與所創(chuàng)建的套接字建立聯(lián)系,由于該臨時端口號客戶端程序事先是不確定的,因此不顯式地使用綁定函數(shù)。(5)accept( )函數(shù)服務(wù)器設(shè)置監(jiān)聽工作方式后,通過調(diào)用 accept( ) 函數(shù)使套接字等待接受客戶連接。對于該客戶機后續(xù)的所有操作,都應(yīng)使用這個新套接字。(6)connect( )函數(shù)客戶端利用 connect( ) 函數(shù)和服務(wù)器建立一個端到端的連接。4 軟件設(shè)計 本設(shè)計客戶端及服務(wù)器端均采用單線程實現(xiàn),命令和數(shù)據(jù)的傳輸在同一個Socket鏈接上進行。 用戶命令格式為“命令字 路徑名/文件名”,則用戶在控制臺界面輸入的命令格式為“GET ”。圖ChpNum3 程序流程圖ChpNum3(a)示出了客戶機的主程序流程,初始化Winsock后,用socket函數(shù)新建一個socket,填寫入服務(wù)器的及IP地址及監(jiān)聽端口后,利用connnect函數(shù)連接到服務(wù)器后即提示用戶輸入ftp命令,程序阻塞在scanf函數(shù)。命令處理函數(shù)主要工作有兩個,一是構(gòu)建命令字節(jié)流發(fā)送到服務(wù)器,二是與服務(wù)器交互該命令的后續(xù)執(zhí)行數(shù)據(jù),例如,對于get命令,該函數(shù)在發(fā)出get命令請求字節(jié)流后,要接收服務(wù)器下發(fā)的文件數(shù)據(jù)。圖ChpNum3(b)示出了服務(wù)器端主程序流程,先初始化Winsock,建立Socket并綁定到監(jiān)聽端口,啟動監(jiān)聽,阻塞在Accept函數(shù)等待連接請求的到來,當連接請求到達,Accept函數(shù)為該請求創(chuàng)建新的Socket用于與對應(yīng)的客戶通信,而原來Socket繼續(xù)處于監(jiān)聽狀態(tài)。各命令處理函數(shù)的設(shè)計請參看源代碼。**********************************************************************/include include include pragma ment(lib,)WSADATA wsd。//發(fā)送緩沖區(qū)及接收緩沖區(qū)define DEFAULT_LSTN_PORT 2416 //本地默認監(jiān)聽端口int n,bytes。 //accept函數(shù)產(chǎn)生的新socketstruct sockaddr_in RemoteAddr。char strObject[100]=。 int sdirfun(SOCKET h_NewSocket)。in
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1