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

简介: python实现TCP客户端从服务器下载文件TCP模拟服务器import socketdef send_file_2_client(new_client_socket, client_addr):# 1.

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
版权声明:本文为博主原创文章,转载请附上博文链接!

相关文章
|
13天前
|
安全 Java 数据处理
Python网络编程基础(Socket编程)多线程/多进程服务器编程
【4月更文挑战第11天】在网络编程中,随着客户端数量的增加,服务器的处理能力成为了一个重要的考量因素。为了处理多个客户端的并发请求,我们通常需要采用多线程或多进程的方式。在本章中,我们将探讨多线程/多进程服务器编程的概念,并通过一个多线程服务器的示例来演示其实现。
|
1月前
|
存储 弹性计算 数据可视化
要将ECS中的文件直接传输到阿里云网盘与相册(
【2月更文挑战第31天】要将ECS中的文件直接传输到阿里云网盘与相册(
417 4
|
12天前
|
开发者 Python
Python中使用`requests`库进行文件上传与下载的技术详解
【4月更文挑战第12天】在Python的网络编程中,文件上传和下载是常见的需求。`requests`库作为一个强大且易用的HTTP客户端,为我们提供了简便的文件上传和下载功能。本文将详细介绍如何在Python中使用`requests`库进行文件上传和下载。
|
15天前
|
数据采集 自然语言处理 搜索推荐
一篇博客带你领略学习Python的第三方库---如何获取和安装第三方库,关于三种常见第三方库的下载和讲解(pyinstall库,jieba库,wordcloud库),更多第三方库的分类介绍
一篇博客带你领略学习Python的第三方库---如何获取和安装第三方库,关于三种常见第三方库的下载和讲解(pyinstall库,jieba库,wordcloud库),更多第三方库的分类介绍
|
16天前
|
Python
Python网络编程基础(Socket编程)UDP服务器编程
【4月更文挑战第8天】Python UDP服务器编程使用socket库创建UDP套接字,绑定到特定地址(如localhost:8000),通过`recvfrom`接收客户端数据报,显示数据长度、地址和内容。无连接的UDP协议使得服务器无法主动发送数据,通常需应用层实现请求-响应机制。当完成时,用`close`关闭套接字。
|
30天前
|
安全 数据处理 C#
C# Post数据或文件到指定的服务器进行接收
C# Post数据或文件到指定的服务器进行接收
|
1月前
|
Linux Docker Python
如何将本地的python项目部署到linux服务器中
如何将本地的python项目部署到linux服务器中
90 1
|
1月前
|
Shell Python Windows
通过Python实现win11环境下FTP的上传与下载
通过Python实现win11环境下FTP的上传与下载
|
1月前
|
数据采集 数据挖掘 开发者
手机使用Python轻松下载闲鱼短视频
手机使用Python轻松下载闲鱼短视频
30 0
手机使用Python轻松下载闲鱼短视频
|
1月前
|
Python
如何利用Python下载酷狗音乐
如何利用Python下载酷狗音乐
33 0