What?!! 這麼方便的文件傳輸方法你還不知道?

作為嵌入式開發程序猿,不可避免的經常需要從電腦、編譯服務器和Linux開發板之間傳輸文件。Android有adb工具,不需要多說,本文程序猿小編給您介紹一種廣泛應用於Linux的一種文件傳輸協議TFTP。

What?!! 這麼方便的文件傳輸方法你還不知道?

TFTP簡介

TFTP(Trivial File Transfer Protocol,簡單文件傳輸協議):TFTP是一個傳輸文件的簡單協議,絕大多數情況下基於UDP協議而實現,也不排除有部分TFTP協議是基於其它傳輸協議完成的。用來在客戶機與服務器之間進行簡單文件傳輸,提供不復雜、開銷不大的文件傳輸服務。端口號為69。

TFTP用法

我們以Windows電腦端作為服務端,Linux作為客戶端為例,具體設置如下:

01 服務端

服務端打開一個名為Tftpd32.exe的TFTP工具,選擇Tftp Server按鈕使其作為服務終端,如下圖:

What?!! 這麼方便的文件傳輸方法你還不知道?

說明:

CurrentDirectory: 當前服務端的路徑,和客戶端傳輸的文件都存儲在這個路徑下。包括客戶端從服務端下載和上傳的所有文件。此路徑可以通過Browse按鈕根據自己的情況設置。

Server interfaces:服務端傳輸數據網口IP地址,對於多個網口的設備,可以選擇所需要傳輸數據網口對應的IP地址。

02 客戶端(開發板)

一般情況下,Linux開發板都會帶有busybox指令集,busybox中一般都集成有tftp命令,所以這就不需要我們在開發板客戶端做任何設置。只需要在串口終端輸入tftp即可使用,下圖是小編開發板上的tftp信息:

What?!! 這麼方便的文件傳輸方法你還不知道?

從上圖可以看出,使用tftp命令傳輸文件時還是有一些參數的,具體常用參數的用法如下:

-g 表示下載文件(get)

-p 表示上傳文件(put)

-l 表示本地文件名(local file)

-r 表示遠程主機的文件名(remote file)

例如,我們要從小編服務端遠程主機172.30.16.72上下載一個名為test.txt的文件,則應輸入以下命令:

tftp -g -r test.txt 172.30.16.72

03 客戶端(Linux服務器)

除了開發板,在一些Linux服務器上,我們也可以使用tftp命令來傳輸文件。請看小編以下操作截圖:

What?!! 這麼方便的文件傳輸方法你還不知道?

由上圖可以看出,我們可以在Linux終端上輸入tftp 172.30.16.72 這個命令,就會進入到tftp的操作,這時客戶端和服務端之間就可以傳輸文件了,用get test.txt命令從服務端下載文件。同樣,用put 命令將文件上傳服務端。這就實現了文件的傳輸功能。

進入TFTP相關操作說明:

connect:連接到遠程tftp服務器

mode:文件傳輸模式

put:上傳文件

get:下載文件

quit:退出

verbose:顯示詳細的處理信息

tarce:顯示包路徑

status:顯示當前狀態信息

binary:二進制傳輸模式

ascii:ascii 傳送模式

rexmt:設置包傳輸的超時時間

timeout:設置重傳的超時時間

help:幫助信息

? :幫助信息

相關操作方法也可以通過在操作界面輸入“?”或者“help”獲取,如下圖:

What?!! 這麼方便的文件傳輸方法你還不知道?

TFTP優缺點

優點:

1、TFTP可用於UDP環境;比如當需要將程序或者文件同時向許多機器下載時就往往需要使用到TFTP協議。

2、TFTP代碼所佔的內存較小,這對於較小的計算機或者某些特殊用途的設備來說是很重要的(比如我們一些簡單的Linux嵌入式設備),這些設備不需要硬盤,只需要固化了TFTP、UDP和IP的小容量只讀存儲器即可。

3、不需要驗證客戶端的權限,在局域網中調試設備時傳輸文件就減少了很多步驟。

缺點:

TFTP是一個傳輸文件的簡單協議,此協議設計的時候是進行小文件傳輸的。因此它不具備通常的FTP的許多功能,它只能從文件服務器上獲得或寫入文件,不能列出目錄。

總結

在一些嵌入式局域網的軟件調試過程中,我們可以用TFTP來傳輸我們調試過程中產生的文件,如一些臨時驗證的可執行文件,抓包文件,TFTP搭建傳輸環境簡單,可以提高我們的調試效率。但是如果是一些比較大的文件並且是互聯網傳輸的,小編我還是建議大家用FTP。

歡迎大家關注我們同名微信公眾號“麻辣軟硬件

”,一起交流技術相關話題!


分享到:


相關文章: