欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

怎么在python中利用TCP協(xié)議實現(xiàn)一個文件下載器-創(chuàng)新互聯(lián)

怎么在python中利用TCP協(xié)議實現(xiàn)一個文件下載器?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

十余年的梨林網(wǎng)站建設經(jīng)驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。全網(wǎng)整合營銷推廣的優(yōu)勢是能夠根據(jù)用戶設備顯示端的尺寸不同,自動調整梨林建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。成都創(chuàng)新互聯(lián)公司從事“梨林網(wǎng)站設計”,“梨林網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。

服務器

from socket import *
import sys
def get_file_content(file_name):
  """獲取文件的內容"""
  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中利用TCP協(xié)議實現(xiàn)一個文件下載器問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關知識。

新聞標題:怎么在python中利用TCP協(xié)議實現(xiàn)一個文件下載器-創(chuàng)新互聯(lián)
網(wǎng)頁URL:http://chinadenli.net/article42/dsgjhc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設計公司、建站公司、面包屑導航定制網(wǎng)站、外貿網(wǎng)站建設、云服務器

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務器托管