[erlang-questions] gen_tcp custom framing
Peter Lund
erlang@REDACTED
Tue Oct 9 10:20:58 CEST 2007
Joern skrev:
>> In R9, I have also forced to match each packet more than one time since
>> an initial length value read out first, cannot be used later in the same
>> binary match statement, but I am guessing that this problem now is history
>> when using R11.
>>
>
> Hmm - I'm not sure I follow you on this one. Can you elaborate?
>
I think I was overly hopeful on what R11 can do (working daily with R9C).
1> f(), <<Z,D:Z/binary,R/binary>> = <<2,3,4,5,6,7,8,9,0 >>, {Z,D,R}.
{2,<<3,4>>,<<5,6,7,8,9,0>>}
2> f(), <<Z,D:Z+1/binary,R/binary>> = <<2,3,4,5,6,7,8,9,0 >>, {Z,D,R}.
** 1: syntax error before: '+' **
I thought/hoped that 2 above would work, but when testing it, it did not.
The size field read into Z from the first octet could be used as the
size of next match in the binary. (1)
But the size could NOT be an expression, in this case involving Z (2).
This forces you to do sequencial binary matching:
- read size Z,
- assign Z2 = expression(Z)
- read rest of the binary using Z2
/Peter
More information about the erlang-questions
mailing list