Packet parsing problem...
Ben Hutchings
ben.hutchings at roundpoint.com
Tue Feb 27 16:37:08 EST 2001
Erno Kuusela <erno-news at erno.iki.fi> writes:
> In article <97ek6i$o6d at news.or.intel.com>, "Brian Geddes"
> <brian.j.geddes at intel.com> writes:
>
> | Here's my situation:
> | There is an already-existing server (written in C++), which
> | communicates with clients through 1-packet messages. Each packet
> | consists of a header of 2 or 3 C++ DWORDs, followed by 0 to n bytes
> | of data. I have to write a Python client to communicate with this
> | server.
>
> | In python, is there any structure that approximates the C++ DWORD?
> | I need to be able to parse incoming packets, as well as properly
> | form messages to the server.
<snip>
> it would be nice to have a struct-ish module in the standard
> distribution that would be geared towards working with data
> formats with known bit layout...
We already have one! You can use a modifier at the beginning of a
struct format string to select one of 5 size, byte ordering and
alignment rules (the first one being the default, native, rules).
So I suppose Brian might read messages using something like this:
from struct import *
(type,) = unpack(message[0:4], '<L')
if type == TYPE_EGGS:
param1, length = unpack(message[4:8], '<LL')
param2 = message[8:length]
elif type == TYPE_SPAM:
...
I'm not sure quite how he'd want to deal with invalid messages; the
above doesn't attempt to do anything useful with them since he hasn't
said much about the message format.
--
Any opinions expressed are my own and not necessarily those of Roundpoint.
More information about the Python-list
mailing list