最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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("沒(méi)有下載的文件:%s" % file_name)
def main():
  if len(sys.argv) != 2:
    print("請(qǐng)按照如下方式運(yùn)行:python3 xxx.py 7890")
    return
  else:
    # 運(yùn)行方式為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)
  # 將主動(dòng)套接字變?yōu)楸粍?dòng)套接字
  tcp_server_socket.listen(128)
  while True:
    # 等待客戶端的鏈接,即為這個(gè)客戶端發(fā)送文件
    client_socket, clientAddr = tcp_server_socket.accept()
    # 接收對(duì)方發(fā)送過(guò)來(lái)的數(shù)據(jù)
    recv_data = client_socket.recv(1024) # 接收1024個(gè)字節(jié)
    file_name = recv_data.decode("utf-8")
    print("對(duì)方請(qǐng)求下載的文件名為:%s" % file_name)
    file_content = get_file_content(file_name)
    # 發(fā)送文件的數(shù)據(jù)給客戶端
    # 因?yàn)楂@取打開(kāi)文件時(shí)是以rb方式打開(kāi),所以file_content中的數(shù)據(jù)已經(jīng)是二進(jìn)制的格式,因此不需要encode編碼
    if file_content:
      client_socket.send(file_content)
    # 關(guān)閉這個(gè)套接字
    client_socket.close()
  # 關(guān)閉監(jiān)聽(tīng)套接字
  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("請(qǐng)輸入服務(wù)器ip:")
  server_port = int(input("請(qǐng)輸入服務(wù)器port:"))
  # 鏈接服務(wù)器
  tcp_client_socket.connect((server_ip, server_port))
  # 輸入需要下載的文件名
  file_name = input("請(qǐng)輸入要下載的文件名:")
  # 發(fā)送文件下載請(qǐng)求
  tcp_client_socket.send(file_name.encode("utf-8"))
  # 接收對(duì)方發(fā)送過(guò)來(lái)的數(shù)據(jù),最大接收1024個(gè)字節(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)
  # 關(guān)閉套接字
  tcp_client_socket.close()
if __name__ == "__main__":
  main()

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

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Python中的可變變量與不可變變量的使用

    Python中的可變變量與不可變變量的使用

    本文主要介紹了Python中的可變變量與不可變變量的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-03-03
  • 基于Python-turtle庫(kù)繪制路飛的草帽骷髏旗、美國(guó)隊(duì)長(zhǎng)的盾牌、高達(dá)的源碼

    基于Python-turtle庫(kù)繪制路飛的草帽骷髏旗、美國(guó)隊(duì)長(zhǎng)的盾牌、高達(dá)的源碼

    這篇文章主要介紹了基于Python-turtle庫(kù)繪制路飛的草帽骷髏旗、美國(guó)隊(duì)長(zhǎng)的盾牌、高達(dá)的源碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • python如何寫try語(yǔ)句

    python如何寫try語(yǔ)句

    在本篇文章里小編給大家整理的是一篇關(guān)于python寫try語(yǔ)句的方法相關(guān)內(nèi)容,有興趣的朋友們可以跟著學(xué)習(xí)參考下。
    2020-07-07
  • 深入解析神經(jīng)網(wǎng)絡(luò)從原理到實(shí)現(xiàn)

    深入解析神經(jīng)網(wǎng)絡(luò)從原理到實(shí)現(xiàn)

    這篇文章主要介紹了深入解析神經(jīng)網(wǎng)絡(luò)從原理到實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Python虛擬機(jī)字節(jié)碼教程之裝飾器實(shí)現(xiàn)詳解

    Python虛擬機(jī)字節(jié)碼教程之裝飾器實(shí)現(xiàn)詳解

    在本篇文章當(dāng)中主要給大家介紹在?cpython?當(dāng)中一些比較常見(jiàn)的字節(jié)碼,從根本上理解?python?程序的執(zhí)行。在本文當(dāng)中主要介紹一些?python?基本操作的字節(jié)碼,并且將從字節(jié)碼的角度分析函數(shù)裝飾器的原理
    2023-04-04
  • Python?操作Excel-openpyxl模塊用法實(shí)例

    Python?操作Excel-openpyxl模塊用法實(shí)例

    openpyxl 模塊是一個(gè)讀寫 Excel 2010 文檔的 Python 庫(kù),如果要處理更早格式的 Excel 文 檔,需要用到額外的庫(kù),openpyxl 是一個(gè)比較綜合的工具,能夠同時(shí)讀取和修改 Excel 文檔,這篇文章主要介紹了Python?操作Excel-openpyxl模塊使用,需要的朋友可以參考下
    2023-05-05
  • pytorch方法測(cè)試詳解——?dú)w一化(BatchNorm2d)

    pytorch方法測(cè)試詳解——?dú)w一化(BatchNorm2d)

    今天小編就為大家分享一篇pytorch方法測(cè)試詳解——?dú)w一化(BatchNorm2d),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • 詳解如何利用Python實(shí)現(xiàn)報(bào)表自動(dòng)化

    詳解如何利用Python實(shí)現(xiàn)報(bào)表自動(dòng)化

    這篇文章主要介紹了報(bào)表自動(dòng)化的流程,并教你用Python實(shí)現(xiàn)工作中的一個(gè)報(bào)表自動(dòng)化實(shí)戰(zhàn),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-03-03
  • Python 變量類型詳解

    Python 變量類型詳解

    變量可以指定不同的數(shù)據(jù)類型,這些變量可以存儲(chǔ)整數(shù),小數(shù)或字符。這篇文章主要介紹了Python 變量類型詳解,需要的朋友可以參考下
    2018-10-10
  • 通過(guò)數(shù)據(jù)庫(kù)對(duì)Django進(jìn)行刪除字段和刪除模型的操作

    通過(guò)數(shù)據(jù)庫(kù)對(duì)Django進(jìn)行刪除字段和刪除模型的操作

    這篇文章主要介紹了通過(guò)數(shù)據(jù)庫(kù)對(duì)Django進(jìn)行刪除字段和刪除模型的操作,這里假設(shè)我們已經(jīng)建立了一個(gè)名為book的數(shù)據(jù)模型,需要的朋友可以參考下
    2015-07-07

最新評(píng)論

资兴市| 长宁县| 溆浦县| 衡阳市| 中方县| 壤塘县| 罗平县| 班戈县| 宿松县| 黔西县| 沁源县| 肥西县| 江陵县| 游戏| 祁阳县| 潍坊市| 横峰县| 海丰县| 横山县| 景谷| 宜都市| 大庆市| 宜丰县| 柞水县| 北海市| 云南省| 梁山县| 卫辉市| 磐安县| 临泽县| 乐山市| 盱眙县| 应城市| 东港市| 山东省| 志丹县| 四会市| 鄂托克前旗| 卢氏县| 清原| 晴隆县|