TCP protokolü, veri gönderilirken kaç byte'lık parçalar halinde gönderileceğine dair hiçbir garanti vermez. Soketten sana ne kadar data verildiyse onu alır biriktirirsin. Bu sistem, eğer örneğin bir dosya download edilecekse, hiçbir sorun teşkil etmez. Okumaya başlarsın, data geldikçe okur ve gelen dataları diske yazarsın. Data kesildiği anda da diskteki dosyayı kapatırsın iş biter. Data 64 KByte'lık paketler halinde gelmiş veya 4096 byte'lik paketler halinde gelmiş aldırmazsın.
Ama eğer gönderilen verinin belli bir yapısı varsa, örneğin 1024 byte'lık sabit uzunlukta mesaj paketlerinden oluşuyorsa, o zaman TCP ile sorun yaşarsın, çünkü TCP senin her zaman 1024'ün katı kadar byte almanı sağlamaz. Bu durumda şöyle bir metot kullanman lazım:
TCP soketten okurken recv fonksiyonuna 1024 byte istediğini söylersin ve TCP sana data verdikçe bir buffer'da biriktirirsin. Mesela TCP sana önce 500 byte verdi. Bunu buffer'ına koyar, sonraki recv ile 524 byte istersin. Diyelim TCP sana bu sefer 400 byte verdi. Bunu buffer'ına koyar, sonraki recv ile 124 byte istersin. Bu şekilde buffer'ı doldurduktan sonra mesajı işler, bu döngüyü tekrar başlatırsın.
Eğer mesaj uzunluğu değişken ise, bu sefer, mesaj uzunluğunun da olduğu bir sabit uzunlukta bir header tanımlarsın. Sonra TCP ile bu header'ın tamamını okuyana kadar yukarıdaki döngüyü yaparsın. Header okunduktan sonra mesajın uzunluğu belli olmuştur. Sonraki adım, bu uzunluğu okuyana kadar yukarıdaki döngüyü yaparsın.