傳送端
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類...