go TCP傳輸檔案

2021-10-02 10:23:03 字數 2750 閱讀 3819

學習 314_尚矽谷_go核心程式設計_海量使用者通訊系統 在其基礎上實現 登入後檔案傳輸到伺服器。

遇到了問題,自定義了報文格式,如何實現檔案傳輸。使用 網路傳輸byte陣列最簡單的就是用base64對byte陣列進行編碼,進過編碼後得到string傳輸到對端解碼得出byte陣列

|客戶端傳送資料到伺服器

*********************************************/

// 傳送檔案到伺服器

type sendfiletoserver struct

func

(this *sendfiletoserver)

sendfile

(filepath string

)(err error

) filename := fileinfo.

name()

filesize := fileinfo.

size()

fmt.

println

("傳送的檔名是:"

, filename)

var mes message.message

mes.type = message.sendfilemestype

open, err := os.

open

(filepath)

if err !=

nildefer open.

close()

var count int64

//傳輸資料

for//傳送到服務端

var filemes message.sendfilemes

filemes.filename = filename

//多讀取到的檔案進行編碼

encodetostring := base64.stdencoding.

encodetostring

(buf[

:readn]

) filemes.filecontext = encodetostring

data, err := json.

marshal

(filemes)

if err !=

nil mes.data =

string

(data)

data, err = json.

marshal

(mes)

if err !=

nil tr :=

&utils.transfer

err = tr.

writepkg

(data)

count +=

int64

(readn)

sendpercent :=

float64

(count)

/float64

(filesize)

*100

value := fmt.

sprintf

("%.2f"

, sendpercent)

//列印上傳進度

fmt.

println

("檔案上傳:"

+ value +

"%")

}return

}

func

(this *sendfileprocess)

receivefile

(mes *message.message)

(err error

) fmt.

println

("傳輸的檔案是:"

, filemes.filename)

openfile, err := os.

openfile

("d:/pic/"

+utils2.

getdatestr()

0666

)if err !=

nildefer openfile.

close()

//傳送使用了base64 編碼,現在解碼

decodestring, err := base64.stdencoding.

decodestring

(filemes.filecontext)

if err !=

nil openfile.

write

(decodestring)

return

}

其餘**

Linux傳輸大檔案(分割傳輸)

1.分拆為多個檔案的命令 cat workspace 2018.tar.gz split b 1g workspace 2018.tar.gz.命令解釋 拆分成1g的小檔案 workspace 2018.tar.gz.是拆分後檔案的字首,預設分拆後檔名稱為workspace 2018.tar.gz....

socket 傳輸檔案

在兩台計算機傳輸檔案之前,必需得先有一台計算機建立套節子連線並繫結乙個固定得埠,並在這個埠偵聽另外一台計算機的連線請求。socket new socket addressfamily.internetwork,sockettype.stream,protocoltype.tcp socket.blo...

Ubuntu scp 傳輸檔案

scp是linux下的遠端拷貝 命令 1 將本地檔案拷貝到遠端 scp 檔名 使用者名稱 計算機ip或者計算機名稱 遠端路徑 2 從遠端將檔案拷回本地 scp 使用者名稱 計算機ip或者計算機名稱 檔名本地路徑 3 將本地目錄拷貝到遠端 scp r目錄名 使用者名稱 計算機ip或者計算機名稱 遠端路...