什么是粘包?socket中造成粘包的原因是什什么?哪些情況會發(fā)生粘包現(xiàn)象?
只有TCP有粘包現(xiàn)象,UDP永遠不會粘包粘包:在獲取數(shù)據(jù)時,出現(xiàn)數(shù)據(jù)的內容不是本應該接收的數(shù)據(jù),如:對方第一次發(fā)送hello,第二次發(fā)送world,我方接收時,應該收兩次,一次是hello,一次是world,但事實上是一次收到helloworld,一次收到空,這種現(xiàn)象叫粘包
原因
粘包問題主要還是因為接收方不知道消息之間的界限,不知道一次性提取多少字節(jié)的數(shù)據(jù)所造成的。
什么情況會發(fā)生:
1、發(fā)送端需要等緩沖區(qū)滿才發(fā)送出去,造成粘包(發(fā)送數(shù)據(jù)時間間隔很短,數(shù)據(jù)了很小,會合到一起,產生粘包)
2、接收方不及時接收緩沖區(qū)的包,造成多個包接收(客戶端發(fā)送了一段數(shù)據(jù),服務端只收了一小部分,服務端下次再收的時候還是從緩沖區(qū)拿上次遺留的數(shù)據(jù),產生粘包)
以上內容為大家介紹了Python粘包,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。