當前位置:首頁 » 文件管理 » socketftp客戶端

socketftp客戶端

發布時間: 2024-03-16 01:31:32

❶ 用socket寫ftp客戶端問題

是的。
需要有兩個套接字,一個用於命令(cmdSocket),一個用於數據(dataSocket)
cmdSocket與ftp伺服器21埠(如果ftp伺服器沒做特殊設置的話)連接,dataSocket因PASV和PORT模式不同,而有所差別。
PASV模式:
1)通過命令cmdSocket套接字發送PASV
2)server端會返回ip地址和專門的數據傳輸埠號
3)在命令套接字cmdSocket上發送LIST命令
4)本地建立dataSocket連接server提供的數據傳輸埠號(此步中,本地作為客戶端)
5)server端通過cmdSocket返回150 開頭的響應(需要讀取cmdSocket)
6)本地通過dataSocket接收數據,即通過dataSocket的inputStream讀取dataSocket中的數據
7)傳輸完畢(read返回-1),cmdSocket會返回226 開頭的響應,關閉連接即可
PORT模式:
1)在本地啟動某個埠的監聽(本地作為服務端,使用ServerSocket)
2)通過命令cmdSocket套接字發送PORT,PORT命令後加參數:本地ip+剛啟動監聽的埠
3)server端響應200
4)在cmdSocket上發送LIST命令
5)調用ServerSocket.accept()獲得數據套接字dataSocket(ftp server作為客戶連接本地的埠)
6)server端通過cmdSocket返回150 開頭的響應(需要讀取cmdSocket)
7)本地通過dataSocket接收數據,即通過dataSocket的inputStream讀取dataSocket中的數據
8)傳輸完畢(read返回-1),cmdSocket會返回226 開頭的響應,關閉連接即可

❷ ftp命令解析過程的描述

FTP客戶端是由2個TCP連接的。
一個只用來發送命令的!!!!
另外一個是用來接收/發送數據的!

就比如TYPE I命令~
客戶端會先把這命令加上\r\n即:"TYPE I\r\n" 發送到伺服器
伺服器收到這命令後會進行解析!再採取相關的處理!
至於如何解析,我想各個伺服器的過程都不見的是一樣的。這個沒有標準的!你可以先把命令和後面的操作分開,它們之間是有空格空開的!
然後直接用strcmp("TYPE", command)對比咯,如果==0再看後面的是I還是A了!

如果你是要聞如何得到該命令那要看以下:
客戶端先要連接伺服器
SOCKET ftpSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);//TCP連接,此連接用於發送命令
SOCKADDR_IN socketAddr;
socketAddr.sin_addr.S_un.S_addr = inet_addr(HostName);//ftp伺服器IP
socketAddr.sin_port = htons(ftpPort);//默認是21
connect(ftpSocket, (const struct sockaddr *)&socketAddr, sizeof(SOCKADDR_IN))
接收伺服器返回命令recv(ftpSocket, (char FAR *)recvBuf, 1024, 0);
發送命令USER user\r\n到伺服器 輸入用戶名(ftp伺服器的)
再接收伺服器返回命令
發送命令PASS password\r\n到伺服器 輸入密碼

這之後你才能發送別的命令~
比如下載數據命令~發送之後會產生另外一個TCP連接傳送文件,文件傳送完之後會關閉~

❸ 什麼是FTP和HTTP

分類: 電腦/網路 >> 互聯網
問題描述:

什麼是FTP和HTTP

解析:

FTP(File Transfer Protocol,文件傳輸協議是Inter上使用非常廣泛的一種通訊協議,它是為Inter用戶進行文件傳輸(包括文件的上傳和下載)而制定的。要想實現FTP文件傳輸,必須在相連的兩端都裝有支持FTP協議的軟體,裝在您的電腦上的叫FTP客戶端軟體,裝在另一端伺服器上的叫做FTP伺服器端軟體。

客戶端FTP軟體使用方法很簡單,啟動後首先要與遠程主機建立連接,然後向遠程主機發出傳輸命令,遠程主機在缺碧仔收到命令後就給予響應,並執行正確的命令。目前Windows系統中最常用的FTP軟體是CUTEFTP。FTP有一個根本的限制,那就是,如果用戶在某個主機上沒有注冊獲得授權,即沒有用戶名和口令,就不能與該主機進行文件傳輸。但匿名FTP伺服器除外,它允許用戶以anonymous作為用戶名,以Email地址作密碼來登錄,從而使用戶獲得免費資源。

====================================

WWW的核心——HTTP協議

眾所周知,Inter的基本協議是TCP/IP協議,目前廣泛採用的FTP、ArchieGopher等是建立在TCP/IP協議之上的應用層協議,不同的協議對應著不同的應用。

WWW伺服器使用的主要協議是HTTP協議,即超文體傳輸協議。由於HTTP協議支持的服務不限於WWW,還可以是其它服務,因而HTTP協議允許用戶在統一的界面下,採用不同的協議訪問不同的服務,如FTP、Archie、SMTP、NNTP等。另外,HTTP協議還可用於名字伺服器和分布式對象管理。

2.1 HTTP協議簡介

HTTP是一個屬於應用層的面向對象的協議,由於其簡捷、快速的方式,適用於分布式超媒體信息系統。它於1990年提出,經過幾年的使用與發展,得到不斷地完善和擴展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的規范化工作正在進行之中,而且HTTP-NG(NextGenerationofHTTP)的建議已經提出。

HTTP協議的主要特點可概括如下:

1.支持客戶/伺服器模式。

2.簡單快速:客戶向伺服器請求服務時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。每種方法規定了客戶與伺服器聯系的類型不同。

由於HTTP協議簡單,使伏汪得HTTP伺服器的程序規模小慧型,因而通信速度很快。

3.靈活:HTTP允許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type加以標記。

4.無連接:無連接的含義是限制每次連接只處理一個請求。伺服器處理完客戶的請求,並收到客戶的應答後,即斷開連接。採用這種方式可以節省傳輸時間。

5.無狀態:HTTP協議是無狀態協議。無狀態是指協議對於事務處理沒有記憶能力。缺少狀態意味著如果後續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。另一方面,在伺服器不需要先前信息時它的應答就較快。

2.2 HTTP協議的幾個重要概念

1.連接(Connection):一個傳輸層的實際環流,它是建立在兩個相互通訊的應用程序之間。

2.消息(Message):HTTP通訊的基本單位,包括一個結構化的八元組序列並通過連接傳輸。

3.請求(Request):一個從客戶端到伺服器的請求信息包括應用於資源的方法、資源的標識符和協議的版本號

4.響應(Response):一個從伺服器返回的信息包括HTTP協議的版本號、請求的狀態(例如「成功」或「沒找到」)和文檔的MIME類型。

5.資源(Resource):由URI標識的網路數據對象或服務。

6.實體(Entity):數據資源或來自服務資源的回映的一種特殊表示方法,它可能被包圍在一個請求或響應信息中。一個實體包括實體頭信息和實體的本身內容。

7.客戶機(Client):一個為發送請求目的而建立連接的應用程序。

8.用戶代理(Useragent):初始化一個請求的客戶機。它們是瀏覽器、編輯器或其它用戶工具。

9.伺服器(Server):一個接受連接並對請求返回信息的應用程序。

10.源伺服器(Originserver):是一個給定資源可以在其上駐留或被創建的伺服器。

11.代理(Proxy):一個中間程序,它可以充當一個伺服器,也可以充當一個客戶機,為其它客戶機建立請求。請求是通過可能的翻譯在內部或經過傳遞到其它的伺服器中。一個代理在發送請求信息之前,必須解釋並且如果可能重寫它。

代理經常作為通過防火牆的客戶機端的門戶,代理還可以作為一個幫助應用來通過協議處理沒有被用戶代理完成的請求。

12.網關(Gateway):一個作為其它伺服器中間媒介的伺服器。與代理不同的是,網關接受請求就好象對被請求的資源來說它就是源伺服器;發出請求的客戶機並沒有意識到它在同網關打交道。

網關經常作為通過防火牆的伺服器端的門戶,網關還可以作為一個協議翻譯器以便存取那些存儲在非HTTP系統中的資源。

13.通道(Tunnel):是作為兩個連接中繼的中介程序。一旦激活,通道便被認為不屬於HTTP通訊,盡管通道可能是被一個HTTP請求初始化的。當被中繼的連接兩端關閉時,通道便消失。當一個門戶(Portal)必須存在或中介(Intermediary)不能解釋中繼的通訊時通道被經常使用。

14.緩存(Cache):反應信息的局域存儲。

2.3 HTTP協議的運作方式

HTTP協議是基於請求/響應範式的。一個客戶機與伺服器建立連接後,發送一個請求給伺服器,請求方式的格式為,統一資源標識符、協議版本號,後邊是MIME信息包括請求修飾符、客戶機信息和可能的內容。伺服器接到請求後,給予相應的響應信息,其格式為一個狀態行包括信息的協議版本號、一個成功或錯誤的代碼,後邊是MIME信息包括伺服器信息、實體信息和可能的內容。

許多HTTP通訊是由一個用戶代理初始化的並且包括一個申請在源伺服器上資源的請求。最簡單的情況可能是在用戶代理(UA)和源伺服器(O)之間通過一個單獨的連接來完成(見圖2-1)。

圖2-1

當一個或多個中介出現在請求/響應鏈中時,情況就變得復雜一些。中介由三種:代理(Proxy)、網關(Gateway)和通道(Tunnel)。一個代理根據URI的絕對格式來接受請求,重寫全部或部分消息,通過URI的標識把已格式化過的請求發送到伺服器。網關是一個接收代理,作為一些其它伺服器的上層,並且如果必須的話,可以把請求翻譯給下層的伺服器協議。一個通道作為不改變消息的兩個連接之間的中繼點。當通訊需要通過一個中介(例如:防火牆等)或者是中介不能識別消息的內容時,通道經常被使用。圖2-2

上面的圖2-2表明了在用戶代理(UA)和源伺服器(O)之間有三個中介(A,B和C)。一個通過整個鏈的請求或響應消息必須經過四個連接段。這個區別是重要的,因為一些HTTP通訊選擇可能應用於最近的連接、沒有通道的鄰居,應用於鏈的終點或應用於沿鏈的所有連接。盡管圖2-2是線性的,每個參與者都可能從事多重的、並發的通訊。例如,B可能從許多客戶機接收請求而不通過A,並且/或者不通過C把請求送到A,在同時它還可能處理A的請求。

任何針對不作為通道的匯聚可能為處理請求啟用一個內部緩存。緩存的效果是請求/響應鏈被縮短,條件是沿鏈的參與者之一具有一個緩存的響應作用於那個請求。下圖說明結果鏈,其條件是針對一個未被UA或A加緩存的請求,B有一個經過C來自O的一個前期響應的緩存拷貝。

圖2-3

在Inter上,HTTP通訊通常發生在TCP/IP連接之上。預設埠是TCP80,但其它的埠也是可用的。但這並不預示著HTTP協議在Inter或其它網路的其它協議之上才能完成。HTTP只預示著一個可靠的傳輸。

以上簡要介紹了HTTP協議的宏觀運作方式,下面介紹一下HTTP協議的內部操作過程。

首先,簡單介紹基於HTTP協議的客戶/伺服器模式的信息交換過程,如圖2-4所示,它分四個過程,建立連接、發送請求信息、發送響應信息、關閉連接。

圖2-4

在WWW中,「客戶」與「伺服器」是一個相對的概念,只存在於一個特定的連接期間,即在某個連接中的客戶在另一個連接中可能作為伺服器。WWW伺服器運行時,一直在TCP80埠(WWW的預設埠)監聽,等待連接的出現。

下面,討論HTTP協議下客戶/伺服器模式中信息交換的實現。 1.建立連接 連接的建立是通過申請套接字(Socket)實現的。客戶打開一個套接字並把它約束在一個埠上,如果成功,就相當於建立了一個虛擬文件。以後就可以在該虛擬文件上寫數據並通過網路向外傳送。

2.發送請求

打開一個連接後,客戶機把請求消息送到伺服器的停留埠上,完成提出請求動作。

HTTP/1.0 請求消息的格式為:

請求消息=請求行(通用信息|請求頭|實體頭)CRLF[實體內容]

請求 行=方法 請求URL HTTP版本號 CRLF

方 法=GET|HEAD|POST|擴展方法

U R L=協議名稱+宿主名+目錄與文件名

請求行中的方法描述指定資源中應該執行的動作,常用的方法有GET、HEAD和POST。不同的請求對象對應GET的結果是不同的,對應關系如下:

對象 GET的結果

文件 文件的內容

程序 該程序的執行結果

資料庫查詢 查詢結果

HEAD——要求伺服器查找某對象的元信息,而不是對象本身。

POST——從客戶機向伺服器傳送數據,在要求伺服器和CGI做進一步處理時會用到POST方法。POST主要用於發送HTML文本中FORM的內容,讓CGI程序處理。

一個請求的例子為:

GETneorking.zju.e/zju/indexHTTP/1.0

頭信息又稱為元信息,即信息的信息,利用元信息可以實現有條件的請求或應答。

請求頭——告訴伺服器怎樣解釋本次請求,主要包括用戶可以接受的數據類型、壓縮方法和語言等。

實體頭——實體信息類型、長度、壓縮方法、最後一次修改時間、數據有效期等。

實體——請求或應答對象本身。

3.發送響應

伺服器在處理完客戶的請求之後,要向客戶機發送響應消息。

HTTP/1.0的響應消息格式如下:

響應消息=狀態行(通用信息頭|響應頭|實體頭) CRLF 〔實體內容〕

狀態行=HTTP版本號 狀態碼 原因敘述

狀態碼表示響應類型

1×× 保留

2×× 表示請求成功地接收

3×× 為完成請求客戶需進一步細化請求

4×× 客戶錯誤

5×× 伺服器錯誤

響應頭的信息包括:服務程序名,通知客戶請求的URL需要認證,請求的資源何時能使用。

4.關閉連接

客戶和伺服器雙方都可以通過關閉套接字來結束TCP/IP對話

❹ 連接ap上線無法訪問ftp伺服器

連接ap上線無法訪問ftp伺服器原因如下:
1、FTP客戶端程序設置問題,客戶上網線路問題,ftp伺服器端問題。處理方法:使用CUTPFTP軟體來上傳客戶的網頁,在ftp主機地址處最好填寫IP地址,上傳時提示socket錯誤就檢查一下使用軟體的編輯菜單下的連接中防火牆使用了pasv模式,取消即可連接主機。
2、使用的上傳軟體的FTP客戶端程序不應該選用PASVmode和firewallsetting。處理方法:使用Cuteftp4.2軟體,在Edit->Setting…->Connection->Firewall去掉PASVmode這個選項即可。

❺ 文件傳輸工具FTP無法連接上傳怎麼辦如何解決

FTP 無法上傳的原因
無法上傳網頁,FTP故障-提示「無法連接伺服器」錯誤。
問題出現原因:FTP客戶端程序設置問題,客戶上網線路問題,FTP伺服器端問題。
處理方法:建議客戶使用CUTPFTP軟體來上傳客戶的網頁,在「FTP主機地址處」最好填寫IP地址,如果客戶上傳時提示socket錯誤的話,請您檢 查一下您使用軟體的編輯菜單下的連接中防火牆里是否有一個使用了PASV模式,如果選中的話,您把此選項取消即可連接主機。
2、FTP時已經通過身份驗證,但總列不出目錄或文件或總是顯示建立數據 socket 失敗,連接被拒絕
問題出現原因:您使用的上傳軟體的FTP客戶端程序不應該選用PASV Mode和Firewall Setting
備註:常用FTP工具被動模式的取消方法
提示的錯誤為「數據 Socket 錯誤: 連接超時 列表錯誤」
FlashFxp取消被動模式
在工具欄的 站點-站點管理器-要取消的站點 -選項-使用被動模式-去掉其前面的鉤
CuteFtp取消被動模式
站點管理器-要取消的站點-右鍵選擇屬性-類型-數據連接類型-使用 port-確定
LeapFtp取消被動模式
在工具欄的 站點-站點管理器-要取消的站點-高級-使用PASV模式-去掉其前面的鉤
這種情況可能是你所在網路安裝了防火牆(或代理),該防火牆(或代理)禁止來自遠程的連接,426 Data connection closed, transfer aborted表明了這一點。這時候你可以使用被動傳輸模式(PASV模式),來避免該限制,進行數據傳輸。
建議:如果不使用PASV(即不使用被動傳輸)能夠正常下載的話,就不要使用被動傳輸,因為主動傳輸比被動傳輸速度快(本站主機在主動傳輸時具備選擇性確 認的TCP選項(RFC2018),能有效進行丟包重傳,具備Timestamps選項(RFC1323)有效測定網路時延,避免提前重傳),被動傳輸有 時在用戶開辟很多線程的時候會出現連接錯誤。
Zend編譯過的文件上傳時必須(強制)使用二進制模式。
首先請您檢查一下您的域名是否做過域名解析,檢測方法:您可以在DOS提示符下輸入ping域名如果可以ping通的話,則您可以在FTP軟體中「FTP主機地址處」填寫您的域名,如果ping不通的話,則您需要在「FTP主機地址處」填寫您主機的IP地址。
注意:我們建議您使用IP地址上傳頁面,同時,某些地區的撥號上網的169對FTP有限制。所以請您最好更換上網方式後再進行測試。
請查看您的登陸名密碼填寫是否正確,因為如果密碼是復制的話,可能會復制出空格。另外,您要看一下您在FTP登陸時選擇的登陸類型是否是普通。
如果您忘了密碼,可在「控制面板」中自行修改。
如果此處的密碼仍無法登陸,請與我們聯系。
可以通過主機控制面板中的磁碟空間管理查看空間佔用情況。
備註:點擊「空間佔用圖」刷新顯示,可以獲得最新的空間佔用情況。

❻ FTP協議是什麼

FTP協議其實是文件傳輸協議,是TCP協議組中的協議之一,值得一提的是FTP協議包含兩個部分,一個是FTP伺服器,另一個是FTP客戶端,我們在日常生活中使用的時候一定要學會區分才行,希望每個人都能夠認識到這一點,同時我們需要注意的是在日常生活中,電子信息行業發展是非常的迅速的,我們在日常生活中一定要學會使用電腦才行,只有這樣才可以讓我們的生活更加的美好。

個人建議:

同時我們需要注意的是,在學習電腦的過程中,一定要學會不恥下問,只有這樣才可以讓我們的能力有一個更加快速的提升,希望每個人都能夠認識到這一點,對於一些專業名詞來說,我們可以查閱相關的資料就可以解決了。

(6)socketftp客戶端擴展閱讀:

FXP傳送出錯時,本地的用戶進程還留在FTP伺服器中,並沒有退出,如此時再次連接FTP伺服器,可能會因用戶線程超過允許,FTP伺服器提示客戶已登陸並拒絕客戶端的連接,直至伺服器中的傀儡進程因超時或其他原因被FTP伺服器殺死後,才能再次連接FTP伺服器。

要連上 FTP 伺服器(即「登陸」),必須要有該 FTP 伺服器授權的帳號,也就是說你只有在有了一個用戶標識和一個口令後才能登陸FTP伺服器,享受FTP伺服器提供的服務。

FTP協議的任務是從一台計算機將文件傳送到另一台計算機,它與這兩台計算機所處的位置、聯接的方式、甚至是是否使用相同的操作系統無關。假設兩台計算機通過ftp協議對話,並且能訪問Internet,

你可以用ftp命令來傳輸文件。每種操作系統使用上有某一些細微差別,但是每種協議基本的命令結構是相同的。

FTP的傳輸有兩種方式:ASCII傳輸模式和二進制數據傳輸模式。

❼ 用C語言寫一個FTP的客戶端程序,需要了解哪些知識

一、需要的知識點:
1、SOCKET技術,網路編程的基本功能
2、FTP
3、如果需要自己寫,可能需要熟悉各個網路框架
二、編寫FTP所需要掌握的框架
1、wininet
2、libcurl

熱點內容
用手機怎麼查詢伺服器的ip 發布:2024-04-28 09:00:43 瀏覽:203
macps緩存 發布:2024-04-28 08:03:26 瀏覽:536
騰訊雲伺服器銷售好做嗎 發布:2024-04-28 08:03:23 瀏覽:585
編程的碼 發布:2024-04-28 08:02:41 瀏覽:545
c封裝資料庫 發布:2024-04-28 07:59:27 瀏覽:682
CRT存儲 發布:2024-04-28 07:57:42 瀏覽:136
硬閾值演算法 發布:2024-04-28 07:52:31 瀏覽:869
iphone存儲空間自動 發布:2024-04-28 07:40:11 瀏覽:953
培訓php還是java 發布:2024-04-28 07:10:49 瀏覽:919
dal數據訪問 發布:2024-04-28 07:09:00 瀏覽:522