python - 在 Python 中从字节字符串中删除前 20 个字节的最快方法是什么?

标签 python tcp pack unpack

我正在使用 TCP 协议(protocol)将数据包从发送方传递到接收方。我需要能够从填充我的“数据包”的内容中分离出标题。

我的标题是这样打包的

tcp_header = pack('!HHLLBBH', tcp_source, tcp_dest, tcp_seq, tcp_ack_seq, tcp_offset_res, tcp_flags,
                          tcp_window) + pack('H', tcp_check) + pack('!H', tcp_urg_ptr)

那么我的包就是这样构造的

packet = tcp_header + user_data

我是这样解压的

(tcp_source, tcp_dest, tcp_seq, tcp_ack_seq, tcp_offset_res, tcp_flags,\
             tcp_window, tcp_check, tcp_urg_ptr) = unpack('!HHLLBBHHH', sent_packet)

但只有当我单独发送 header 时它才有效。如何在解包前拆分标题中的内容?

谢谢

最佳答案

你要找的函数struct.unpack_from,

struct.unpack_from('!HHLLBBHHH', sent_packet)

关于python - 在 Python 中从字节字符串中删除前 20 个字节的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36685097/

相关文章:

python - python 中的静态 lambda

python - 加快计算返回

c# - 从两个不同的 IP 连接到服务器不起作用(聊天应用程序)

wcf - net.tcp 和 http 有什么区别?

ruby - 转换为utf8和从utf8转换时如何打包和解包猜测字符编码?

python - 关于 python 中的 struct.unpack()

python - 内容未渲染错误: The response content must be rendered before it can be iterated over

c++ - TCP 套接字是否可以注意到网络中断的异常?

perl - 打包/解包 - little endian - 64 位 - 问题

PHP 字符串到 "unsigned long"(来自 C++)