操作步驟:
1、讀取檔名
2、檔案是否存在
3、開啟檔案
4、讀取檔案大小
5、準備傳送檔案到客戶端
6、等客戶端確認,防止發生粘包
7、傳送資料
8、md5校驗
客戶端
import socket
import hashlib
client = socket.socket()
client.connect(("localhost", 9999))
while true:
cmd = input(">>:").strip()
if len(cmd) == 0: continue
if cmd.startswith("get"):
client.send(cmd.encode("utf-8")) # 傳送1
data_size = client.recv(1024) # 接收2 檔案大小
print("接收的檔案大小為:", data_size)
client.send("準備好了".encode("utf-8")) # 傳送3 傳送確認
filename = cmd.split()[1]
recived_size = 0
m = hashlib.md5()
with open(filename + ".new", "wb") as f:
while recived_size < int(data_size.decode()):
if int(data_size.decode()) - recived_size > 1024:#防止粘包
size = 1024
else:
size = int(data_size.decode()) - recived_size
print(size)
recived_data = client.recv(size) # 接收4 接收檔案
f.write(recived_data)
m.update(recived_data)
recived_data_size = len(recived_data)
recived_size += recived_data_size
else:
server_md5 = client.recv(1024)
print("來自伺服器檔案的md5", server_md5.decode())
client_md5 = m.hexdigest()
print("接受後的檔案的md5", client_md5)
print("接收完畢")
print("接收到檔案資料大小:", recived_size, "/", int(data_size.decode()))
client.close()
服務端
import os, socket
import hashlib
server = socket.socket()
server.bind(("localhost", 9999))
server.listen()
print("正在監聽")
while true:
conn, address = server.accept()
print("新的會話", address)
while true:
print("等待新指令")
data = conn.recv(1024) # 接收1
if not data:
print("客戶端已斷開")
break
cmd, filename = data.decode().split()
if os.path.isfile(filename):
with open(filename, "rb") as f:
file_data_size = os.stat(filename).st_size
print("傳送的檔案大小為:", file_data_size)
conn.send(str(file_data_size).encode("utf-8")) # 傳送2 檔案大小
client_ack = conn.recv(1024) # 接收3 接收確認
m = hashlib.md5()
for line in f:
conn.send(line) # 傳送4 檔案內容
m.update(line)
conn.send(m.hexdigest().encode("utf-8"))
print("md5值為:",m.hexdigest())
print("傳送完畢")
server.close()
客戶端如圖所示
接收的檔案大小為: b'26659288'
764來自伺服器檔案的md5 c9ccdae767ebccd4b3f86ff3506c16ba
接受後的檔案的md5 c9ccdae767ebccd4b3f86ff3506c16ba
接收完畢
接收到檔案資料大小: 26659288 / 26659288
服務端正在監聽
新的會話 ('127.0.0.1', 56787)
等待新指令
傳送的檔案大小為: 26659288
md5值為: c9ccdae767ebccd4b3f86ff3506c16ba
傳送完畢
等待新指令
檔案服務 FTP Server
ftp server 簡介名詞解釋 ftp file transfer protocol,檔案傳輸協議 是 tcp ip 協議組中的協議之一 logo 作用提供檔案共享服務 網際網路上多的 資源和軟體資源。絕大部分都是通過ftp伺服器傳遞。軟體包 vsftpd 基礎 控制埠 command 21 t...
檔案共享服務 FTP Server
setenforce 0 這個是暫時關閉,下面那個是永久關閉 vim etc selinux config selinux disabled 這個是永久關閉selinux 1.安裝客戶端工具 root qianfeng yum y install lftp 訪問伺服器 root qianfeng l...
安裝FTPSERVER的過程
1.安裝vsftpd元件,安裝完後,有 etc vsftpd vsftpd.conf 檔案,用來配置,還有新建了乙個ftp使用者和ftp的組,指向home目錄為 var ftp,預設是nologin 不能登入系統 yum y install vsftpd 可以用下面命令檢視使用者 cat etc p...