Socket recv methodunun döndürdüğü verinin uzunluğu neden sürekli değişiyor?

recv ile 4096 bayt veri alıyor, ama aldığı veriler bazen 4096 yerine 2404,320,1300,2208,2660 gibi farklı değerlerde alıyor. Yani 10000 baytlık bir veriyi alınca 4096-4096 en sonda kalanlar içinde 1818 şeklinde neden almıyor?

while True:
	recv = c.recv(4096)
	print(len(recv))
	if not recv:
		break

Bunu baya konuşmuştuk aslında, üstüne basa basa “recv(n), n byte’a kadar değer döndürüyor.” denilmişti.


Ne?

1 Beğeni

yani en fazla 4096 ya kadar döndürüyor. Bende gelen verileri recv kaç verirsek hepsini 4096 bayt alıp en son kalan olursa da 4096 dan küçük bir sayı ile alacak sanıyordum.