您现在的位置是:首页 > 文章详情

python实现TCP客户端从服务器下载文件

日期:2019-07-11点击:439

python实现TCP客户端从服务器下载文件
TCP模拟服务器

import socket

def send_file_2_client(new_client_socket, client_addr):

# 1. 接收客户端 需要下载的文件名 # 接收客户端发送过来的 要下载的文件名 file_name = new_client_socket.recv(1024).decode("utf-8") print("客户端(%s)需要下载文件是:%s" % (str(client_addr), file_name)) file_content = None # 2. 打开这个文件,读取数据 try: 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("hahahghai-----ok-----".encode("utf-8")) new_client_socket.send(file_content) 

def main():

# 1.创建套接字 socket tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 2.绑定本地信息 bind tcp_server_socket.bind(("", 7890)) # 3.让默认的套接字由主动变为被动 listen tcp_server_socket.listen(128) while True: # 4.等待客户端的链接 accept new_client_socket, client_addr = tcp_server_socket.accept() # 5. 调用发送文件函数,完成为客户端服务 send_file_2_client(new_client_socket, client_addr) # 6. 关闭套接字 new_client_socket.close() tcp_server_socket.close() 

if name == "__main__":

main() 

TCP模拟客户端

"""tcp_文件下载客户端"""
from socket import *

def main():

# 创建套接字 tcp_client_socket = socket(AF_INET, SOCK_STREAM) # 目的信息 server_ip = input("请输入服务器的IP:") server_port = int(input("请输入服务器的port:")) server_addr = (server_ip, server_port) # 连接服务器 connect(目标Ip, 目标端口) tcp_client_socket.connect(server_addr) # 输入需要下载的文件名 file_name = input("请输入需要下载的文件名: ") # 发送数据 tcp_client_socket.send(file_name.encode("utf-8")) # 接收对方发过来的数据,最大值为1024字节(1K) recv_data = tcp_client_socket.recv(1024) if recv_data: with open("[接收]"+file_name, "wb")as f: f.write(recv_data) # 关闭套接字 tcp_client_socket.close() 

if name == '__main__':

main() 

注意:使用时,一定要先开启服务器,再开启客户端;关闭时也要先关闭客户端,再关闭服务器

作者:Vince Li
来源:CSDN
原文:https://blog.csdn.net/weixin_43250623/article/details/89074221
版权声明:本文为博主原创文章,转载请附上博文链接!

原文链接:https://yq.aliyun.com/articles/708711
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章