python使用tcp實現(xiàn)局域網(wǎng)內文件傳輸
更新時間:2020年03月20日 14:29:33 作者:WangF0
這篇文章主要介紹了python使用tcp實現(xiàn)局域網(wǎng)內文件傳輸,文件包括文本,圖片,視頻等,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文為大家分享了python使用tcp實現(xiàn)局域網(wǎng)內文件傳輸?shù)木唧w代碼,供大家參考,具體內容如下
功能:
可以利用python創(chuàng)建的TCP客戶端從我們自己搭建的TCP服務器上下載文件。
實現(xiàn)需求:
安裝socket模塊
簡單了解sokcet模塊用法
服務器代碼如下:
import socket
def file_deal(file_name):
# 定義函數(shù)用于處理用戶索要下載的文件
try:
# 二進制方式讀取
files = open(file_name, "rb")
mes = files.read()
except:
print("沒有該文件")
else:
files.close()
return mes
def main():
# 創(chuàng)建套接字
tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 固定端口號
tcp_socket.bind(("",8888))
# 將主動套接字轉為被動套接字
tcp_socket.listen(128)
while True:
# 利用accept獲取分套接字以及客戶端的地址
client_socket,client_addr = tcp_socket.accept()
# 接收客戶端的數(shù)據(jù)
file_name = client_socket.recv(4096)
# 調用函數(shù)處理用戶下載的文件
mes = file_deal(file_name)
if mes:
# 如果文件不為空發(fā)送
client_socket.send(mes)
#關閉分套接字
client_socket.close()
if __name__ == "__main__":
main()
import socket
def file_deal(file_name):
# 定義函數(shù)用于處理用戶索要下載的文件
try:
# 二進制方式讀取
files = open(file_name, "rb")
mes = files.read()
except:
print("沒有該文件")
else:
files.close()
return mes
def main():
# 創(chuàng)建套接字
tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 固定端口號
tcp_socket.bind(("",8888))
# 將主動套接字轉為被動套接字
tcp_socket.listen(128)
while True:
# 利用accept獲取分套接字以及客戶端的地址
client_socket,client_addr = tcp_socket.accept()
# 接收客戶端的數(shù)據(jù)
file_name = client_socket.recv(4096)
# 調用函數(shù)處理用戶下載的文件
mes = file_deal(file_name)
if mes:
# 如果文件不為空發(fā)送
client_socket.send(mes)
#關閉分套接字
client_socket.close()
if __name__ == "__main__":
main()
客戶端代碼:
from socket import *
import os
def main():
# 建立套接字
tcp_socket = socket(AF_INET, SOCK_STREAM)
# 接收用輸入的服務器端的ip和端口
tcp_ip = input("請輸入ip:")
tcp_port = int(input("請輸入端口:"))
# 連接服務器
tcp_socket.connect((tcp_ip, tcp_port))
# 輸入要下載的文件名
file_name = input("請輸入要下載的文件名:")
# 將文件名發(fā)送至服務器端
tcp_socket.send(file_name.encode())
# 創(chuàng)建一個空文件
new_file = open(file_name, "wb")
# 用與計算讀取的字節(jié)數(shù)
time = 0
while True:
# 接收服務器端返回的內容
mes = tcp_socket.recv(4096)
# 如果內容不為空執(zhí)行
if mes:
# 解碼并向文件內寫入
new_file.write(mes.decode())
# 計算字節(jié)
time += len(mes)
else:
# 如果字節(jié)數(shù)為空即未收到內容
if time == 0:
# 關閉文件
new_file.close()
# 刪除剛剛創(chuàng)建的文件
os.remove(file_name)
print("沒有您要下載的文件")
else:
# 如過time有值時name文件傳輸完成
print("文件下載成功")
break
# 關閉套接字
tcp_socket.close()
if __name__ == '__main__':
main()
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
- Python實現(xiàn)基于HTTP文件傳輸實例
- Python實現(xiàn)的簡單文件傳輸服務器和客戶端
- python實現(xiàn)的一個p2p文件傳輸實例
- python3.5基于TCP實現(xiàn)文件傳輸
- python cs架構實現(xiàn)簡單文件傳輸
- python 使用poster模塊進行http方式的文件傳輸?shù)椒掌鞯姆椒?/a>
- 樹莓派采用socket方式文件傳輸(python)
- python基于xmlrpc實現(xiàn)二進制文件傳輸?shù)姆椒?/a>
- python實現(xiàn)FTP文件傳輸?shù)姆椒ǎǚ掌鞫撕涂蛻舳耍?/a>
- python利用socket實現(xiàn)udp文件傳輸功能
相關文章
使用Python串口實時顯示數(shù)據(jù)并繪圖的例子
今天小編就為大家分享一篇使用Python串口實時顯示數(shù)據(jù)并繪圖的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12
Python利用Gradio與EasyOCR構建在線識別文本的Web應用
隨著人工智能的不斷發(fā)展,各種智能算法越來越普遍,本文就給大家介紹一種通過訓練好的算法進行文字識別的方法,而且是Web頁面可視化操作,方便調用,希望大家喜歡2023-04-04
Python實現(xiàn)計算字符串中出現(xiàn)次數(shù)最多的字符示例
這篇文章主要介紹了Python實現(xiàn)計算字符串中出現(xiàn)次數(shù)最多的字符,涉及Python針對字符串的遍歷、統(tǒng)計等相關操作技巧,需要的朋友可以參考下2019-01-01
Python編程pytorch深度卷積神經網(wǎng)絡AlexNet詳解
AlexNet和LeNet的架構非常相似。這里我們提供了一個稍微精簡版本的AlexNet,去除了當年需要兩個小型GPU同時運算的設計特點2021-10-10

