TCP packet size?
Gordon McMillan
gmcm at hypernet.com
Wed Jun 14 08:44:54 EDT 2000
More information about the Python-list mailing list
Wed Jun 14 08:44:54 EDT 2000
- Previous message (by thread): TCP packet size?
- Next message (by thread): TCP packet size?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Richard Brodie wrote: > >"chris" <chris at rpgarchive.com> wrote in message >news:3948AC51.98E5EAEC at rpgarchive.com... > >>The messages just aren't reassembled the way I thought TCP worked. >>I'm hoping to find a way to received one message at a time in its >>entirety, or determine the start and end of my messages >Everyone programming to the TCP/sockets API gets burnt sooner or later >by this. Curse three times, dance round the room widdershins, then put >a data length field in your message header. Check Stevens or any other >decent introduction to socket prograaming for details. And use a buffer to reassemble the data into discrete messages, which seems to be the thing you want to avoid. Here's one pattern you can use (you need something similar on the write side, too): def getmsg(self): if self.buff is None: raise IOError, "read past end of file" while 1: msglen = int(self.buff[:5]) if len(self.buff) > msglen: msg = self.buff[:msglen] self.buff = self.buff[msglen:] return msg input = self.sock.recv(8192) if not input: # socket closed msg = self.buff self.buff = None return msg self.buff = self.buff + input - Gordon
- Previous message (by thread): TCP packet size?
- Next message (by thread): TCP packet size?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list