【Python】socket实现服务器和客户端传输文件(可多用户同时登陆)

单用户的文件上传和下载

1. 服务器端:

# 完整服务器端(面对单用户)
from socket import*
import json
import os
import struct

# 服务器端文件夹位置
FILEPATH = "E:/Python学习/socket网络编程/服务器文件/"

# 创建sever服务器
sever = socket(AF_INET, SOCK_STREAM)
ip_port = ('',21566)
buffSize = 1024

# 监听
sever.bind(ip_port)
sever.listen(5)

while True:
    # 连接客户端
    print("waiting for connection......\n")
    clientSock, addr = sever.accept()
    print("connected with ", end = '')
    print(addr)
    print()

    # 开始通信
    while True:
        # 接收客户端的选择信息,上传,下载?
        funcSelect = clientSock.recv(buffSize).decode("utf-8")  # 把数据从bytes类型转换为str
        print("用户的选择是:", end='')
        print(funcSelect)
        print()

        # 客户端上传文件
        if funcSelect == "1":
            # 接收客户端发送的报头长度
            head_struct = clientSock.recv(4)

            # 解析报头的长度
            head_len = struct.unpack('i', head_struct)[0]

            # 接收大小为head_len的报头内容(报头内容包括文件大小,文件名内容)
            data = clientSock.recv(head_len)

            # 解析报头的内容, 报头为一个字典其中包含上传文件的大小和文件名,
            head_dir = json.loads(data.decode("utf-8")) 
  • 5
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值