sock_stream 是有保障的(即能保證數據正確傳送到對方)面向連接的SOCKET,多用于資料(如文件)傳送。
sock_dgram 是無保障的面向消息的socket , 主要用于在網絡上發廣播信息。
SOCK_STREAM是基于TCP的,數據傳輸比較有保障。SOCK_DGRAM是基于UDP的,專門用于局域網,基于廣播SOCK_STREAM 是數據流,一般是tcp/ip協議的編程,SOCK_DGRAM分是數據抱,是udp協議網絡編程
解釋一下:關于UDP
1、UDP協議適用端口分辨運行在同一臺設備上的多個應用程序,UDP有不提供數據報分組、組裝和不能對數據包進行排序的缺點。也就是說,當報文發送之后,是無法得知其是否安全完整到達的。
2、在網絡質量令人不十分滿意的環境下,UDP協議數據包丟失會比較嚴重。
3、但是由于UDP的特性:它不屬于連接型協議,因而具有資源消耗小,處理速度快的優點,所以通常音頻、視頻和普通數據在傳送時使用UDP較多,因為它們即使偶爾丟失一兩個數據包,也不會對接收結果產生太大影響。
關于TCP
1、TCP提供端到端、全雙工通信;采用字節流方式,如果字節流太長,將其分段;提供緊急數據傳送功能。
2、TCP特性:
(1)面向連接的傳輸;?
(2)端到端的通信;?
(3)高可靠性,確保傳輸數據的正確性,不出現丟失或亂序;?
(4)全雙工方式傳輸;?
(5)采用字節流方式,即以字節為單位傳輸字節序列;?
(6)緊急數據傳送功能。所以如果你需要傳輸的數據是準確的,建議采用TCP,也就是sock_stream 如果你傳輸的是視頻音頻等數據,丟幾個包也無所謂的,可以采用UDP,也就是sock_dgram
原文鏈接:https://blog.csdn.net/qq_21792169/article/details/50160327