python网络基础:STRUCT模块定制报文,实现FTP上传功能

一、struct模块

python中struct 模块用于python数据结构与C结构之间的相互转换,其中C结构是用一种格式化字符串表示的,学习struct 模块的难点就在这个格式化字符串上,强烈建议最好了解下C语言结构体的相关知识点,如果比较熟悉C语言结构体及对齐,学习struct 模块轻而易举。
官方英文文档:struct — Interpret strings as packed binary data
引用来源:https://blog.csdn.net/guoyajie1990/article/details/81044929

二、自制报文格式

headers = {‘file_name’: filename, ‘file_path’: filepath, ‘file_size’: None}

类型 方法 描述
报头 head=struct.pack(‘i’, ‘序列化之后报文的长度’) 长度4个,服务端接受时候可以根据这个设置接受长度,避免沾包
发送报头 send(head) 服务端可以根据4个字节获取报头
发送报文 send(‘序列化之后的headers’) 服务端根据报文内文件大小,设置接受长度,避免沾包

网络传输过程中处处有协议,协议就是一堆报头和报文,协议的解析过程不需要关心,协议本质上就是一种约定

FTP上传功能实例

1、服务端代码

代码均有注释,方便理解,如有不懂,评论或者私信,一起学习一起进步

import socket
import struct,pickle

tcpSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 获取tcp/ip套接字
tcpSock.bind(('127.0.0.1', 8898))  # 绑定 (主机,端口号)到套接字
tcpSock.listen(1)  # 开始监听,设置半进程池为1

print('====服务端等待请求中====')
while True:
    conn, addr = tcpSock.accept()  # 4、被动(阻塞式)接受TCP客户的连接
    
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值