1. 程式人生 > >流式套接字(SOCK_STREAM),數據報套接字 (SOCK_DGRAM) 的比較

流式套接字(SOCK_STREAM),數據報套接字 (SOCK_DGRAM) 的比較

在服務器 還要 數據 客戶端 不一定 打包成 出錯 soc 接受

1.流式套接字

使用這種套接字時,數據在客戶端是順序發送的,並且到達的順序是一致的。比如你在客戶端先發送1,再發送2,那麽在服務器端的接收順序是先接收到1,再接收到2,流式套接字是可靠的,是面向連接的;

2.數據報套接字

這種套接字是無連接的,數據是打包成數據包發送的,到達的順序不一定與發送的順序是一致的,並且數據不一定是可達的,並且接收到的數據還可能出錯。

既然這樣那為什麽還要使用這種套接字呢?因為現每個使用udp的程序都有自己的對數據進行確認的協議。如TFTP協議規定了每收到一個消息比如, TFTP 協議定義了對於每一個發送出去的數據包,遠程在接受到之後都要回送一個數據包告訴本地程序: “我已經拿到了!(一 ”個 “ACK” 包) 。如果數據包發的送者在 5 秒內沒有的得到回應,它就會重新發送這個

數據包直到數據包接受者回送了 “ACK” 信號。這些知識對編寫一個使用 UDP 協議的程序員來說是非常必要的。

流式套接字(SOCK_STREAM),數據報套接字 (SOCK_DGRAM) 的比較