Python Web學習筆記之SOCK_STREAM和SOCK_DGRAM


SOCK_STREAM

  1. 數據流
  2. 一般是tcp/ip協議的編程
  3. 有保障的(即能保證數據正確傳送到對方)面向連接的SOCKET,多用於資料(如文件)傳送

SOCK_DGRAM

  1. 數據包
  2. udp協議網絡編程
  3. 是無保障的面向消息的socket , 主要用於在網絡上發廣播信息。

關於UDP

  1. UDP協議適用端口分別運行在同一台設備上的多個應用程序,UDP不提供數據報分組、組裝和不能對數據包進行排序的缺點。也就是說,當報文發送之后,是無法得知其是否安全完整到達的。
  2. 在網絡質量令人不十分滿意的環境下,UDP協議數據包丟失會比較嚴重。
  3. 由於UDP的特性:它不屬於連接型協議,因而具有資源消耗小,處理速度快的優點,所以通常音頻視頻普通數據在傳送時使用UDP較多,因為它們即使偶爾丟失一兩個數據包,也不會對接收結果產生太大影響。

關於TCP

  1. 面向連接的傳輸;
  2. 端到端的通信;
  3. 高可靠性,確保傳輸數據的正確性,不出現丟失或亂序;
  4. 全雙工方式傳輸;
  5. 采用字節流方式,即以字節為

 

SOCK_STREAM

是有保障的(即能保證數據正確傳送到對方)面向連接的SOCKET,多用於資料(如文件)傳送。

SOCK_DGRAM

是無保障的面向消息的socket,主要用於在網絡上發廣播信息。

 


SOCK_STREAM是基於TCP的,數據傳輸比較有保障

SOCK_STREAM 是數據流,一般是tcp/ip協議的編程

SOCK_DGRAM分是數據抱,是udp協議網絡編程

SOCK_DGRAM是基於UDP的,專門用於局域網,基於廣播


 

新套接口的類型描述類型,如TCP(SOCK_STREAM)和UDP(SOCK_DGRAM)。

常用的socket類型有,SOCK_STREAM、SOCK_DGRAM、SOCK_RAW、SOCK_PACKET、SOCK_SEQPACKET等等。

指定協議。套接口所用的協議。如調用者不想指定,可用0。

常用的協議有,IPPROTO_TCP、IPPROTO_UDP、IPPROTO_SCTP、IPPROTO_TIPC等

它們分別對應TCP傳輸協議、UDP傳輸協議、STCP傳輸協議、TIPC傳輸協議。

SOCK_STREAM 提供有序的、可靠的、雙向的和基於連接的字節流,使用帶外數據傳送機制,為Internet地址族使用TCP。

SOCK_DGRAM 支持無連接的、不可靠的和使用固定大小(通常很小)緩沖區的數據報服務,為Internet地址族使用UDP。

SOCK_STREAM類型的套接口為全雙向的字節流。

對於流類套接口,在接收或發送數據前必需處於已連接狀態。

用connect()調用建立與另一套接口的連接

連接成功后,即可用send()和recv()傳送數據。當會話結束后,調用closesocket()。

帶外數據根據規定用send()和recv()來接收。

實現SOCK_STREAM類型套接口的通訊協議保證數據不會丟失也不會重復。

如果終端協議有緩沖區空間,且數據不能在一定時間成功發送,則認為連接中斷,其后續的調用也將以WSAETIMEOUT錯誤返回。

SOCK_DGRAM類型套接口允許使用sendto()和recvfrom()從任意端口發送或接收數據報。

如果這樣一個套接口用connect()與一個指定端口連接,則可用send()和recv()與該端口進行數據報的發送與接收。

 

 

參考1

參考2


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM