欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python基于TCP實現(xiàn)的文件下載器功能案例

 更新時間:2019年12月10日 08:45:19   作者:小飛俠v科比  
這篇文章主要介紹了python基于TCP實現(xiàn)的文件下載器功能,結合具體實例形式分析了Python使用socket模塊實現(xiàn)的tcp協(xié)議下載功能客戶端與服務器端相關操作技巧,需要的朋友可以參考下

本文實例講述了python基于TCP實現(xiàn)的文件下載器功能。分享給大家供大家參考,具體如下:

服務器 參考代碼如下:

from socket import *
import sys
def get_file_content(file_name):
  """獲取文件的內(nèi)容"""
  try:
    with open(file_name, "rb") as f:
      content = f.read()
    return content
  except:
    print("沒有下載的文件:%s" % file_name)
def main():
  if len(sys.argv) != 2:
    print("請按照如下方式運行:python3 xxx.py 7890")
    return
  else:
    # 運行方式為python3 xxx.py 7890
    port = int(sys.argv[1])
  # 創(chuàng)建socket
  tcp_server_socket = socket(AF_INET, SOCK_STREAM)
  # 本地信息
  address = ('', port)
  # 綁定本地信息
  tcp_server_socket.bind(address)
  # 將主動套接字變?yōu)楸粍犹捉幼?
  tcp_server_socket.listen(128)
  while True:
    # 等待客戶端的鏈接,即為這個客戶端發(fā)送文件
    client_socket, clientAddr = tcp_server_socket.accept()
    # 接收對方發(fā)送過來的數(shù)據(jù)
    recv_data = client_socket.recv(1024) # 接收1024個字節(jié)
    file_name = recv_data.decode("utf-8")
    print("對方請求下載的文件名為:%s" % file_name)
    file_content = get_file_content(file_name)
    # 發(fā)送文件的數(shù)據(jù)給客戶端
    # 因為獲取打開文件時是以rb方式打開,所以file_content中的數(shù)據(jù)已經(jīng)是二進制的格式,因此不需要encode編碼
    if file_content:
      client_socket.send(file_content)
    # 關閉這個套接字
    client_socket.close()
  # 關閉監(jiān)聽套接字
  tcp_server_socket.close()
if __name__ == "__main__":
  main()

客戶端 參考代碼如下:

from socket import *
def main():
  # 創(chuàng)建socket
  tcp_client_socket = socket(AF_INET, SOCK_STREAM)
  # 目的信息
  server_ip = input("請輸入服務器ip:")
  server_port = int(input("請輸入服務器port:"))
  # 鏈接服務器
  tcp_client_socket.connect((server_ip, server_port))
  # 輸入需要下載的文件名
  file_name = input("請輸入要下載的文件名:")
  # 發(fā)送文件下載請求
  tcp_client_socket.send(file_name.encode("utf-8"))
  # 接收對方發(fā)送過來的數(shù)據(jù),最大接收1024個字節(jié)(1K)
  recv_data = tcp_client_socket.recv(1024)
  # print('接收到的數(shù)據(jù)為:', recv_data.decode('utf-8'))
  # 如果接收到數(shù)據(jù)再創(chuàng)建文件,否則不創(chuàng)建
  if recv_data:
    with open("[接收]"+file_name, "wb") as f:
      f.write(recv_data)
  # 關閉套接字
  tcp_client_socket.close()
if __name__ == "__main__":
  main()

更多關于Python相關內(nèi)容可查看本站專題:《Python Socket編程技巧總結》、《Python數(shù)據(jù)結構與算法教程》、《Python函數(shù)使用技巧總結》、《Python字符串操作技巧匯總》、《Python入門與進階經(jīng)典教程》及《Python文件與目錄操作技巧匯總

希望本文所述對大家Python程序設計有所幫助。

相關文章

  • Python兔子毒藥問題實例分析

    Python兔子毒藥問題實例分析

    這篇文章主要介紹了Python兔子毒藥問題,實例分析了兔子毒藥問題的算法原理與Python解決方法,需要的朋友可以參考下
    2015-03-03
  • pandas中數(shù)據(jù)的排序與排名的具體使用

    pandas中數(shù)據(jù)的排序與排名的具體使用

    Pandas對數(shù)據(jù)進行排序和排名是非常常見的操作,本文主要介紹了pandas中數(shù)據(jù)的排序與排名的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-07-07
  • 聊聊基于pytorch實現(xiàn)Resnet對本地數(shù)據(jù)集的訓練問題

    聊聊基于pytorch實現(xiàn)Resnet對本地數(shù)據(jù)集的訓練問題

    本文項目是使用Resnet模型來識別螞蟻和蜜蜂,其一共有三百九十六張的數(shù)據(jù),訓練集只有兩百多張(數(shù)據(jù)集很?。?,運行十輪后,分別對訓練集和測試集在每一輪的準確率,對pytorch實現(xiàn)Resnet本地數(shù)據(jù)集的訓練感興趣的朋友一起看看吧
    2022-03-03
  • ubuntu?20.04系統(tǒng)下如何切換gcc/g++/python的版本

    ubuntu?20.04系統(tǒng)下如何切換gcc/g++/python的版本

    這篇文章主要給大家介紹了關于ubuntu?20.04系統(tǒng)下如何切換gcc/g++/python版本的相關資料,文中通過代碼介紹的非常詳細,對大家學習或者使用ubuntu具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-12-12
  • python 實現(xiàn)Requests發(fā)送帶cookies的請求

    python 實現(xiàn)Requests發(fā)送帶cookies的請求

    這篇文章主要介紹了python 實現(xiàn)Requests發(fā)送帶cookies請求的方法,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2021-02-02
  • Python入門教程(十五)Python的字典

    Python入門教程(十五)Python的字典

    這篇文章主要介紹了Python入門教程(十五)Python的字典,Python是一門非常強大好用的語言,也有著易上手的特性,本文為入門教程,需要的朋友可以參考下
    2023-04-04
  • Python基于DES算法加密解密實例

    Python基于DES算法加密解密實例

    這篇文章主要介紹了Python基于DES算法加密解密實現(xiàn)方法,以實例形式分析了DES算法實現(xiàn)加密解密的相關技巧,需要的朋友可以參考下
    2015-06-06
  • Python3監(jiān)控疫情的完整代碼

    Python3監(jiān)控疫情的完整代碼

    這篇文章主要介紹了Python3監(jiān)控疫情的完整代碼,代碼簡單易懂,非常不錯具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • python爬蟲之爬取百度翻譯

    python爬蟲之爬取百度翻譯

    這篇文章主要介紹了python爬蟲之爬取百度翻譯,文中有非常詳細的代碼示例,對正在學習python的小伙伴們喲喲非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • 如何用Python畫一些簡單形狀你知道嗎

    如何用Python畫一些簡單形狀你知道嗎

    這篇文章主要介紹了用Python作圖的一個簡單實例,通過turtle模塊實現(xiàn)作圖,具有一定參考價值,需要的朋友可以了解下希望能給你帶來幫助
    2021-08-08

最新評論