TCP文件下载器(Python)
生活随笔
收集整理的這篇文章主要介紹了
TCP文件下载器(Python)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
使用TCP編寫一個文件下載器,分為客戶端和服務器,此博客為上一篇的延伸,增加了文件讀寫編程。
下載器服務器程序:
import socketdef send_file_client(new_client_socket, client_addr):# 1.接受客戶端發過來的文件名file_name=new_client_socket.recv(1024).decode("utf-8")print("客戶端發下載的文件名:%s"%str(file_name))# 2.打開這個文件,讀取數據file_content=Nonetry:f=open(file_name,"rb")file_content=f.read()f.close()except Exception as ret:print("沒有要下載的文件:%s"% file_name)#3.回送一數據給客戶端if file_content:new_client_socket.send(file_content)def main():# 創建套接字tcp_sever_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)# 綁定本地信息tcp_sever_socket.bind(('',7890))# 讓默認是套接字主動變為被動(listen)tcp_sever_socket.listen(128)while True:# 等待客戶端的鏈接print("等待新的客戶端到來")new_client_socket,client_addr=tcp_sever_socket.accept() # 服務套接字print("客戶端已經到來:%s"%str(client_addr))# 調用發送文件函數send_file_client(new_client_socket,client_addr)# 關閉套接字new_client_socket.close()print("已經為這個客戶端服務完畢")tcp_sever_socket.close() if __name__ == '__main__':main()下載器客戶端程序:
import socketdef main():# 1.創建套接字tcp_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)# 2.獲取服務器ip,portdest_ip=input("輸入下載服務器的IP:")dest_port=int(input("輸入下載服務器的port:"))# 3.連接服務器tcp_socket.connect((dest_ip,dest_port))# 4.獲取下載的文件名字download_file=input("輸入下載文件的名字:")# 5.將下載的文件名字發送到服務器tcp_socket.send(download_file.encode("utf-8"))# 6.接受文件中的數據recv_data=tcp_socket.recv(1024*1024)if recv_data:# 7.保存接收到的數據到文件中with open("new"+download_file,"wb") as f:f.write(recv_data)# 8.關閉套接字tcp_socket.close() if __name__ == '__main__':main()總結
以上是生活随笔為你收集整理的TCP文件下载器(Python)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java单机部署,Nacos docke
- 下一篇: oracle用户和mysql用户_ora