将结构打包在一起

Packing structs together

我很少有由 python 构造(headers 和消息)组成的结构。我可以将它们每个都发送到 tcp 套接字中,但无法将它们组合在一起进行发送。

    #!/usr/bin/env python2.7

    import socket
    import sys
    from construct import *
    from construct.lib import *

    Header = Struct(
       "HdrLength" / Int16ul,
       "HdrCount" / Int8ul,
    )

    Message = Struct(
       "Smth" / Int32ul
    )

    hdr = Header.build(dict(HdrLength = messages.Header.sizeof() + Message.sizeof(), HdrCount = 1))
    msg = Message.build(dict(Smth = 32))

    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server_address = ('localhost', 10000)
    sock.bind(server_address)
    sock.listen(1)

我如何将可变数量的消息打包在一起,以便稍后在套接字中以字节形式发送?

    connection.send(what?)

谢谢

构建buildreturns个bytes实例。

您可以使用二元运算符 +.

连接 bytes 个实例,就像连接字符串一样