开发者社区> 汪凡640> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

tcp文件下载客户端+服务端

简介: 客户端: import socket if __name__ == '__main__': # 创建tcp客户端socket tcp_client_socket = socket.socket(socket.
+关注继续查看

客户端:

import socket

if __name__ == '__main__':
    # 创建tcp客户端socket
    tcp_client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # 和服务端socket建立连接
    tcp_client_socket.connect(("192.168.131.106", 7878))
    # 接收用户输入的文件名
    file_name = input("请输入您要下载的文件对应的名字:")
    # 对字符串进行编码
    file_name_data = file_name.encode("gbk")
    # 发送下载文件的请求信息
    tcp_client_socket.send(file_name_data)
    # 定义二进制空的数据
    result_file_data = b""
    # 循环接收数据
    while True:
        # 获取服务端发送的文件二进制数据
        file_data = tcp_client_socket.recv(1024)
        if file_data:
            # 拼接每次读取的数据
            result_file_data += file_data
        else:
            break
    # 判断文件是否有数据
    if result_file_data:
        # 写入到指定文件里面, with open 文件操作完成以后关闭文件是系统自己操作的
        with open("/home/python/Desktop/" + file_name, "wb") as file:
            file.write(result_file_data)
    else:
        print("文件为空")
    # 关闭socket
    tcp_client_socket.close()

服务端:

import socket
import os

if __name__ == '__main__':
    # 创建tcp服务端socket
    tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # 绑定端口号
    tcp_server_socket.bind(("", 7878))
    # 设置监听,把主动套接字改成被动套接字,被动套接字只能接收客户端连接请求,不能收发消息,收发消息使用新的套接字
    tcp_server_socket.listen(128)
    # 注意点:目前服务端是单任务的一个人下载完成以后另外一个人才能再下载
    # 循环接收客户端连接请求
    while True:
        # 等待接收客户端的连接请求
        tcp_service_socket, ip_port = tcp_server_socket.accept()
        print(ip_port)
        # 接收客户端的请求信息,其实文件名
        file_name_data = tcp_service_socket.recv(1024)
        # 对二进制数据进行解码获取文件名字符串
        file_name = file_name_data.decode("gbk")
        # "路径/" + file_name 判断指定路径是否有对应的文件
        # file_name在当前工程判断该文件是否存在
        if os.path.exists(file_name):
            # 打开指定文件把数据发送给客户端
            with open(file_name, "rb") as file:
                while True:
                    # 读取文件中的数据
                    file_data = file.read(1024)
                    # 判断数据是否为空
                    if file_data:
                        # 发送数据给客户端
                        tcp_service_socket.send(file_data)
                    else:
                        break
        print(file_name, ip_port)
        # 和客户端终止服务
        tcp_service_socket.close()
    # 关闭服务端套接字,以后不再接收客户端的连接请求
    tcp_server_socket.close()

  

                                                                   -------  知识无价,汗水有情,如需搬运请注明出处,谢谢!

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
《TCP IP 详解卷1:协议》阅读笔记 - 第十四章
阅读须知:笔记为阅读《TCP IP 详解卷1:协议》后摘抄的一些知识点,其间也有加入一些根据英文原版的自己翻译和结合网上知识后的理解,所以有些段落之间并不能够串联上或者知识点与书上略有差别(基本差别不大,参考的资料属RFC官方文档)。
1533 0
《TCP IP 详解卷1:协议》阅读笔记 - 第七章
阅读须知:笔记为阅读《TCP IP 详解卷1:协议》后摘抄的一些知识点,其间也有加入一些根据英文原版的自己翻译和结合网上知识后的理解,所以有些段落之间并不能够串联上或者知识点与书上略有差别(基本差别不大,参考的资料属RFC官方文档)。
1488 0
《TCP IP 详解卷1:协议》阅读笔记 - 第十八章
阅读须知:笔记为阅读《TCP IP 详解卷1:协议》后摘抄的一些知识点,其间也有加入一些根据英文原版的自己翻译和结合网上知识后的理解,所以有些段落之间并不能够串联上或者知识点与书上略有差别(基本差别不大,参考的资料属RFC官方文档)。
1960 0
《TCP IP 详解卷1:协议》阅读笔记 - 第十一章
阅读须知:笔记为阅读《TCP IP 详解卷1:协议》后摘抄的一些知识点,其间也有加入一些根据英文原版的自己翻译和结合网上知识后的理解,所以有些段落之间并不能够串联上或者知识点与书上略有差别(基本差别不大,参考的资料属RFC官方文档)。
1497 0
《TCP IP 详解卷1:协议》阅读笔记 - 第六章
阅读须知:笔记为阅读《TCP IP 详解卷1:协议》后摘抄的一些知识点,其间也有加入一些根据英文原版的自己翻译和结合网上知识后的理解,所以有些段落之间并不能够串联上或者知识点与书上略有差别(基本差别不大,参考的资料属RFC官方文档)。
1282 0
《TCP IP 详解卷1:协议》阅读笔记 - 第五章
阅读须知:笔记为阅读《TCP IP 详解卷1:协议》后摘抄的一些知识点,其间也有加入一些根据英文原版的自己翻译和结合网上知识后的理解,所以有些段落之间并不能够串联上或者知识点与书上略有差别(基本差别不大,参考的资料属RFC官方文档)。
1324 0
《TCP IP 详解卷1:协议》阅读笔记 - 第四章
阅读须知:笔记为阅读《TCP IP 详解卷1:协议》后摘抄的一些知识点,其间也有加入一些根据英文原版的自己翻译和结合网上知识后的理解,所以有些段落之间并不能够串联上或者知识点与书上略有差别(基本差别不大,参考的资料属RFC官方文档)。
1195 0
《TCP IP 详解卷1:协议》阅读笔记 - 第二章
阅读须知:笔记为阅读《TCP IP 详解卷1:协议》后摘抄的一些知识点,其间也有加入一些根据英文原版的自己翻译和结合网上知识后的理解,所以有些段落之间并不能够串联上或者知识点与书上略有差别(基本差别不大,参考的资料属RFC官方文档)。
1266 0
《TCP IP 详解卷1:协议》阅读笔记 - 第十七章
阅读须知:笔记为阅读《TCP IP 详解卷1:协议》后摘抄的一些知识点,其间也有加入一些根据英文原版的自己翻译和结合网上知识后的理解,所以有些段落之间并不能够串联上或者知识点与书上略有差别(基本差别不大,参考的资料属RFC官方文档)。
1330 0
+关注
汪凡640
python初高级,python web,爬虫,分布式爬虫,数据分析,数据挖掘
143
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载