91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在python中利用tcp在局域網中傳輸文件

發布時間:2021-03-20 15:15:43 來源:億速云 閱讀:156 作者:Leah 欄目:開發技術

怎么在python中利用tcp在局域網中傳輸文件?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

功能:

可以利用python創建的TCP客戶端從我們自己搭建的TCP服務器上下載文件。

實現需求:

安裝socket模塊
簡單了解sokcet模塊用法

服務器代碼如下:

import socket

def file_deal(file_name):
 # 定義函數用于處理用戶索要下載的文件
 try:
 # 二進制方式讀取
 files = open(file_name, "rb")

 mes = files.read()

 except:


 print("沒有該文件")

 else:

 files.close()

 return mes

def main():
 # 創建套接字
 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()
 # 接收客戶端的數據
 file_name = client_socket.recv(4096)
 # 調用函數處理用戶下載的文件
 mes = file_deal(file_name)

 if mes:
  # 如果文件不為空發送

  client_socket.send(mes)
 #關閉分套接字

 client_socket.close()

if __name__ == "__main__":
 main()

import socket


def file_deal(file_name):
 # 定義函數用于處理用戶索要下載的文件
 try:
 # 二進制方式讀取
 files = open(file_name, "rb")

 mes = files.read()

 except:


 print("沒有該文件")

 else:

 files.close()

 return mes

def main():
 # 創建套接字
 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()
 # 接收客戶端的數據
 file_name = client_socket.recv(4096)
 # 調用函數處理用戶下載的文件
 mes = file_deal(file_name)

 if mes:
  # 如果文件不為空發送

  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("請輸入要下載的文件名:")

 # 將文件名發送至服務器端
 tcp_socket.send(file_name.encode())
 # 創建一個空文件
 new_file = open(file_name, "wb")
 # 用與計算讀取的字節數
 time = 0

 while True:
 # 接收服務器端返回的內容
 mes = tcp_socket.recv(4096)
 # 如果內容不為空執行
 if mes:
  # 解碼并向文件內寫入
  new_file.write(mes.decode())

  # 計算字節
  time += len(mes)

 else:
  # 如果字節數為空即未收到內容
  if time == 0:
  # 關閉文件
  new_file.close()
  # 刪除剛剛創建的文件
  os.remove(file_name)
  print("沒有您要下載的文件")
  else:
  # 如過time有值時name文件傳輸完成
  print("文件下載成功")

  break
 # 關閉套接字
 tcp_socket.close()


if __name__ == '__main__':
main()

看完上述內容,你們掌握怎么在python中利用tcp在局域網中傳輸文件的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

双鸭山市| 巫溪县| 秦安县| 蒙自县| 宝鸡市| 周至县| 德保县| 东阿县| 应用必备| 元氏县| 琼海市| 菏泽市| 梁河县| 镇平县| 莎车县| 临朐县| 深泽县| 福州市| 田东县| 皋兰县| 平遥县| 余江县| 龙川县| 巴塘县| 习水县| 溆浦县| 织金县| 威远县| 浏阳市| 石首市| 崇明县| 诸暨市| 收藏| 杨浦区| 涿鹿县| 阿尔山市| 北辰区| 澳门| 田东县| 泗水县| 汾阳市|