本文实例讲述了Python插座实现的文件下载器功能。分享给大家供大家参考,具体如下:
先写客户端再写服务端
<强> 1. tcp下载器客户端强>
进口套接字 def main (): #创建套接字 tcp_socket=socket.socket (socket.AF_INET socket.SOCK_STREAM) #获取服务器ip和端口 dest_ip=输入(“请输入下载服务器的ip:”) dest_port=int(输入(“请输入下载服务器的端口:")) #连接服务器 tcp_socket.connect ((dest_ip dest_port)) #获取下载的文件名称 download_file_name=输入(“请输入要下载的文件名称:") #将文件名称发送到服务器 tcp_socket.send (download_file_name.encode (“gbk”)) #接收文件中的数据 recv_data=tcp_socket.recv (1024) # 1024=1 k 1024 * 1024=1 m 如果recv_data: #保存接收到的数据到新文件 张开(“[新]”+ download_file_name.wb) f: f.write (recv_data) #关闭套接字 tcp_socket.close () if __name__==癬_main__”: main () >之前<强> 2. tcp下载器服务端强>
进口套接字 def send_file_2_client (new_client_socket client_addr): # 1。接收客户端需要下载的文件名 file_name=new_client_socket.recv (1024) .decode (“gbk”) 打印(“客户端(% s)需要下载的文件是:% s“% (str (client_addr), file_name)) file_content=没有 # 2。打开这个文件,读取数据 试一试: f=开放(file_name rb) file_content=f.read () f.close () 除了例外ret: 打印(“没有要下载的文件(% s)”% file_name) # 3。发送文件数据给客户端 如果file_content: new_client_socket.send (file_content) def main (): #创建套接字 tcp_server_socket=socket.socket (socket.AF_INET socket.SOCK_STREAM) #绑定本地信息 tcp_server_socket.bind (" ", 7890) #让默认套接字由主动变为被动听 tcp_server_socket.listen (128) 而真正的: #等待客户端的连接接受 new_client_socket client_addr=tcp_server_socket.accept () #调用发送文件函数,完成客户端的服务 send_file_2_client (new_client_socket client_addr) #关闭套接字 new_client_socket.close () tcp_server_socket.close () if __name__==癬_main__”: main () >之前更多关于Python相关内容可查看本站专题:《Python套接字编程技巧总结》,《Python数据结构与算法教程》、《Python函数使用技巧总结》,《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。
Python插座实现的文件下载器功能示例