国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

python使用tcp實(shí)現(xiàn)局域網(wǎng)內(nèi)文件傳輸

2020-02-15 22:35:04
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文為大家分享了python使用tcp實(shí)現(xiàn)局域網(wǎng)內(nèi)文件傳輸?shù)木唧w代碼,供大家參考,具體內(nèi)容如下

功能:

可以利用python創(chuàng)建的TCP客戶端從我們自己搭建的TCP服務(wù)器上下載文件。

實(shí)現(xiàn)需求:

安裝socket模塊
簡(jiǎn)單了解sokcet模塊用法

服務(wù)器代碼如下:

import socketdef file_deal(file_name): # 定義函數(shù)用于處理用戶索要下載的文件 try:  # 二進(jìn)制方式讀取  files = open(file_name, "rb")  mes = files.read() except:  print("沒(méi)有該文件") else:  files.close()  return mesdef main(): # 創(chuàng)建套接字 tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 固定端口號(hào) tcp_socket.bind(("",8888)) # 將主動(dòng)套接字轉(zhuǎn)為被動(dòng)套接字 tcp_socket.listen(128) while True:  # 利用accept獲取分套接字以及客戶端的地址  client_socket,client_addr = tcp_socket.accept()  # 接收客戶端的數(shù)據(jù)  file_name = client_socket.recv(4096)  # 調(diào)用函數(shù)處理用戶下載的文件  mes = file_deal(file_name)  if mes:   # 如果文件不為空發(fā)送   client_socket.send(mes)  #關(guān)閉分套接字  client_socket.close()if __name__ == "__main__": main()import socketdef file_deal(file_name): # 定義函數(shù)用于處理用戶索要下載的文件 try:  # 二進(jìn)制方式讀取  files = open(file_name, "rb")  mes = files.read() except:  print("沒(méi)有該文件") else:  files.close()  return mesdef main(): # 創(chuàng)建套接字 tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 固定端口號(hào) tcp_socket.bind(("",8888)) # 將主動(dòng)套接字轉(zhuǎn)為被動(dòng)套接字 tcp_socket.listen(128) while True:  # 利用accept獲取分套接字以及客戶端的地址  client_socket,client_addr = tcp_socket.accept()  # 接收客戶端的數(shù)據(jù)  file_name = client_socket.recv(4096)  # 調(diào)用函數(shù)處理用戶下載的文件  mes = file_deal(file_name)  if mes:   # 如果文件不為空發(fā)送   client_socket.send(mes)  #關(guān)閉分套接字  client_socket.close()if __name__ == "__main__": main()

客戶端代碼:

from socket import *import osdef main(): # 建立套接字 tcp_socket = socket(AF_INET, SOCK_STREAM) # 接收用輸入的服務(wù)器端的ip和端口 tcp_ip = input("請(qǐng)輸入ip:") tcp_port = int(input("請(qǐng)輸入端口:")) # 連接服務(wù)器 tcp_socket.connect((tcp_ip, tcp_port)) # 輸入要下載的文件名 file_name = input("請(qǐng)輸入要下載的文件名:") # 將文件名發(fā)送至服務(wù)器端 tcp_socket.send(file_name.encode()) # 創(chuàng)建一個(gè)空文件 new_file = open(file_name, "wb") # 用與計(jì)算讀取的字節(jié)數(shù) time = 0 while True:  # 接收服務(wù)器端返回的內(nèi)容  mes = tcp_socket.recv(4096)  # 如果內(nèi)容不為空?qǐng)?zhí)行  if mes:   # 解碼并向文件內(nèi)寫(xiě)入   new_file.write(mes.decode())   # 計(jì)算字節(jié)   time += len(mes)  else:   # 如果字節(jié)數(shù)為空即未收到內(nèi)容   if time == 0:    # 關(guān)閉文件    new_file.close()    # 刪除剛剛創(chuàng)建的文件    os.remove(file_name)    print("沒(méi)有您要下載的文件")   else:    # 如過(guò)time有值時(shí)name文件傳輸完成    print("文件下載成功")   break # 關(guān)閉套接字 tcp_socket.close()if __name__ == '__main__':main()            
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 江阴市| 绥江县| 林西县| 龙胜| 鹿邑县| 东莞市| 清涧县| 双桥区| 汉沽区| 香格里拉县| 凤山县| 中阳县| 孙吴县| 漳浦县| 卢湾区| 赤峰市| 蒙山县| 安顺市| 从江县| 秭归县| 商丘市| 英吉沙县| 资源县| 清镇市| 灵川县| 西昌市| 安庆市| 西藏| 淮南市| 肥西县| 蓬莱市| 资阳市| 安多县| 郸城县| 松江区| 贵德县| 渑池县| 河津市| 吉安市| 定兴县| 斗六市|