python - message reassembly / socket communication -


i have socket receives information in packets of 1024 characters or less. in packets messages or parts thereof. each message ended 2 characters.

the problem appears when there fragmentation of messages across 2 packages. algorithm recommend handle fragmentation? (i'm not looking reinvent wheel here, because think ubiquitous problem).

example:

|011 012 013 014 \r\r 021 022 023 | 024 \r\r 031 032 033 | 034 \r\r 041 042 043 044 \r\r |

| ... | -> packet

xxx xxx ... \r\r -> message

buffer = ''  # reading loop while true:    data = socket.recv(1024)   if not data:     break    # add current data read socket temporary buffer   buffer += data    # search complete messages   messages = buffer.split('\r\r')    # need @ least 2 messages continue   if len(messages) == 1:     continue    # seperator found, iterate across complete messages   message in messages [:-1]:     # handle here message     print message    # set buffer last cutted message   buffer = messages [-1] 

Comments