Mega Code Archive

 
Categories / Delphi / LAN Web TCP
 

Tclientsocket and tserversocket

Question: Why don't the Sockets receive more than 8k worth of data? Answer: Because the IP layer breaks a stream of data into 8k chunks, the developer must explicitly insert a length integer at the beginning of the stream telling the receiving end how much data to expect, more importantly, how many 8k packets to receive. Because the Socket components are just wrappers for the WinSock and not Protocols with header information (as mentioned above), the developer must concern themselves with said "padding" of data. This requires: NOTE: The implementation can vary by the developer so this will remain generic. padding the data at the source with a length integer, extracting the length integer at the destination, counting the number of bytes received at the destination and matching those with the length integer. If TotalBytesReceived <> LengthInteger then know the next packet is a continuation, otherwise know the next packet is a different stream altogether. NOTE: This is handled in HTTP & FTP protocols via header information (ie, 'Content\Length:').