go語言實現檔案傳輸

2022-08-10 10:18:20 字數 1555 閱讀 2118

傳送端

ackagemain

import(

"fmt"

"io"

"net"

"os"

)funcmain()

//獲取檔案屬性

f, err:= file.stat()

fmt.println(f.name(), f.size())

//主動連線伺服器

conn, err:= net.dial("tcp", "127.0.0.1:8000")

iferr != nil

//檔案接收完畢關閉連線

deferconn.close()

//給接收方傳送檔名

_, err= conn.write(byte(f.name()))

iferr != nil

//接受對方回覆, 如果回覆「ok」 說明對方準備好了, 可以傳送檔案了

buf:= make(byte, 1024)

n, err:= conn.read(buf)

iferr != nil

//接收到ok傳送檔案內容

if"ok"== string(buf[:n]) //}

funcsendfile(path string, conn net.conn)

//延遲關閉

deferf.close()

//定義快取位元組切片

buf:= make(byte, 1024*4)

for else

return

}//傳送內容

conn.write(buf[:n])}}

傳送端packagemain

import(

"fmt"

"io"

"net"

"os"

)funcmain()

//延遲關閉監聽

deferlistener.close()

//堵塞等待使用者連線, 這裡只讓使用者連線一次 , 可以用for 一直監聽

conn, err:= listener.accept()

iferr != nil

//延遲關閉

deferconn.close()

buf:= make(byte, 1024)

//將檔案內容快取進入buf

n, err:= conn.read(buf)

iferr != nil

//將快取區裡面的檔名稱賦值給filename

filename:= string(buf[:n])

//回覆「ok」

conn.write(byte("ok"))

//接收檔案內容

recvfile(filename, conn)

}funcrecvfile(filename string, conn net.conn)

//定義快取位元組切片

buf:= make(byte, 1024*4)

//接收多少 , 寫多少

for else

return

}ifn == 0

f.write(buf[:n])}}

python實現檔案傳輸

我程式設計的時候,開了兩個python的shell,乙個做server,乙個做client 然後就直接在命令提示符下一行一行的編,感覺自己是在使用一套高階命令列,而不是在程式設計。server端 import socket sersock socket.socket socket.af inet,s...

Python FTP檔案傳輸實現

ftp一般流程 ftp對應pasv和port兩種訪問方式,分別為被動和主動,是針對ftp伺服器端進行區分的,正常傳輸過程中21號埠用於指令傳輸,資料傳輸埠使用其他埠。pasv 由客戶端發起資料傳輸請求,伺服器端返回並攜帶資料埠,並且伺服器端開始監聽此埠等待資料,為被動模式 port 客戶端監聽埠並向...

TCP實現檔案傳輸

一直想著給之前的clouddisk專案加上乙個c s架構的檔案傳輸模組,因為之前是nginx fastcgi架構的b s架構,自己又不會前段 沒有辦法繼續增加新的功能塊。最近終於抽出時間開始寫專案了,已經選用tcp完成linux下的cs架構檔案上傳功能模組,這裡展示tcp檔案傳輸模組。socket類...