- - * - WhiteUnicorn - * - -




* #WhiteUnicorn/ StartPage/ Documentation/DelphiFAQ >


Frequently Asked Questions

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.

  1. padding the data at the source with a length integer,
  2. extracting the length integer at the destination,
  3. counting the number of bytes received at the destination and matching those with the length integer.
  4. 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:').



* #WhiteUnicorn/ StartPage/ Documentation/DelphiFAQ >



- - * - Anastasija aka WhiteUnicorn - * - - LJLiveJournal
PFPhotoFile