• <table id="4yyaw"><kbd id="4yyaw"></kbd></table>
  • <td id="4yyaw"></td>
  • 發布時間:2020-10-05 19:05 原文鏈接: python修煉day29(一)

    今日內容概述:

    TCP 文件下載、線程

    今日思維導圖

    TCP 文件下載代碼

    tcp客戶端

    import socket

    def main():

    # 創建套接字 

    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    # 鏈接服務器

    client_socket.connect(("192.168.xxx.xxx", 8080))

    # 發送要下載的文件名

    file_name = input("請輸入要下載的文件名:")

    client_socket.send(file_name.encode("utf-8"))

    # 接收數據并保存

    recv_data = client_socket.recv(1024 * 1024)

    # 判斷是否有數據,如果有就進行保存,沒有就就進行提示

    # "wb" 是以字節模式進行寫入,軟件會對字節進行解碼

    if recv_data:
           with open("new_%s" % file_name, "wb") as f:

    f.write(recv_data)

    print("文件下載成功")

    else:
           print("文件下載失敗")

    # 關閉套接字

    client_socket.close(

    if __name__ == "__main__":

    main()

    tcp服務器

    import socket

    def send_file_content(client_socket, client_addr):

    # 接收服務器發送過來的文件,

    # 進行判斷有沒有這個文件,如果有就打開文件并讀取

    recv_file_name = client_socket.recv(1024).decode("utf-8")

    print("客戶端 %s 要下載的文件是 %s" % (client_addr, recv_file_name))

    file_content = None

    # 把文件的內容發送給客戶端

    # 進行異常判斷,出現異常就進行提示

    try:
           f = open(recv_file_name, "rb")
           file_content = f.read()
           f.close()

    except Exception as result:
           # print(result)
           print("沒有要下載的 %s 這個文件" % recv_file_name)

    # 判斷是否有數據,如果有數據,就進行發送

    if file_content:
           client_socket.send(file_content)
           print("文件傳輸成功"

    def main():

    # 創建套接字

    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    # 綁定本地信息

    server_socket.bind(("", 8080))

    # 監聽

    server_socket.listen(128)

    while True:
           # 等待鏈接
           client_socket, client_addr = server_socket.accept()
           # 調用發送文件數據的函數
           send_file_content(client_socket, client_addr)
           # 關閉兩個套接字
           client_socket.close()

    server_socket.close()

    if __name__ == "__main__":

    main()

    執行結果


  • <table id="4yyaw"><kbd id="4yyaw"></kbd></table>
  • <td id="4yyaw"></td>
  • 调性视频