I've figured out a solution. Thanks for the help guys, it led me in the right path, especially your suggestions Guido and Gustavo.
On Friday, July 31, 2015 at 11:16:03 AM UTC-6, Wellington Cordeiro wrote: > > > The protocol doesn't give you a direct length, it gives you a few hints > though. A message looks like > 8=FIX.4.3\x019=63\x0135=5\ > > x0149=DEMO.ZION2_P.FIX\x0156=ABFX\x0134=4\x0152=20150730-18:42:07.013\x0110=130\x01 > > So we've got a 'tag=value' format with the '\x01' as a delimiter, the > first tag/value chunk indicates the protocol version, the second indicates > the character count > from it's end (so the 3 of 35=5) up to the delimiter before the > 10=130\x01. Then the 10=130 at the end is a checksum of the whole message, > up to but not including itself. > > I calculate those with these methods. > https://bpaste.net/show/31f328cdc145 > > So there is some data that indicates a length of transmission, I'm just > not sure how to use that. > On Friday, July 31, 2015 at 10:59:40 AM UTC-6, Guido van Rossum wrote: >> >> Oh, that's usually part of the protocol. How would you tell that you've >> got the end of the message if you read a sequence of messages from a file? >> (Note: rhetorical question -- this is meant for you to think about the >> problem you are having so you can solve it yourself.) >> >> Note that .read(N) reads at least one but at most N bytes, blocking at >> most once, so maybe you can do something with that. >> >> On Fri, Jul 31, 2015 at 6:40 PM, Wellington Cordeiro <[email protected]> >> wrote: >> >>> I'm not sure I entirely follow though, if I don't know the size of the >>> response ahead of time, how will readexactly(N) help me? >>> >>> On Friday, July 31, 2015 at 10:12:29 AM UTC-6, Guido van Rossum wrote: >>>> >>>> Perhaps better to use readexactly(N), which raises EOF instead of >>>> returning fewer than N bytes if it hits EOF early. >>>> >>>> On Fri, Jul 31, 2015 at 5:02 PM, Victor Stinner <[email protected]> >>>> wrote: >>>> >>>>> 2015-07-31 6:56 GMT+02:00 Luciano Ramalho <[email protected]>: >>>>> > It seems to me you can't use .read() with no arguments to read data >>>>> > that is not line-oriented and is not the whole transmission either. >>>>> > You must use .read(N), where N is a number of bytes. Then you parse >>>>> > what you get and decide on a suitable value of N for the next read. >>>>> > Rinse and repeat. >>>>> >>>>> Exactly. >>>>> >>>>> Victor >>>>> >>>> >>>> >>>> >>>> -- >>>> --Guido van Rossum (python.org/~guido) >>>> >>> >> >> >> -- >> --Guido van Rossum (python.org/~guido) >> >
