文章來源:ASPCN 作者:孫雯
Socket傳輸模式
Sockets有兩種主要的操作方式:連線導向的和不需連線的.連線導向的sockets操作就像一部電話,他們必須建立一個串連和一人呼叫.所有的事情在到達時的順序與它們出發時的順序時一樣.不需連線的sockets操作就像是一個郵件投遞,,沒有什麼保證,多個郵件可能在到達時的順序與出發時的順序不一樣.
到底用哪種模式是郵應用程式的需要決定的.如果可靠性更重要的話,用連線導向的操作會好一些.比如檔案伺服器需要他們的資料的正確性和有序性.如果一些資料丟失了,系統的有效性將會失去.一些伺服器,比如間歇性地發送一些資料區塊.如果資料丟了的話,伺服器並不想要再重新發過一次.因為當資料到達的時候,它可能已經過時了.確保資料的有序性和正確性需要額外的操作的記憶體消耗,額外的費用將會降低系統的回應速率.
不需連線的操作使用資料報協議.一個資料報是一個獨立的單元,它包含了所有的這次投遞的資訊.把它想象成一個信封吧,它有目的地址和要發送的內容.這個模式下的socket不需要串連一個目的的socket,它只是簡單地投出資料報.不需連線的操作是快速的和高效的,但是資料安全性不佳.
連線導向的操作使用TCP協議.一個這個模式下的socket必須在發送資料之前與目的地的socket取得一個串連.一旦串連建立了,sockets就可以使用一個流介面:開啟-讀-寫-關閉.所有的發送的資訊都會在另一端以同樣的順序被接收.連線導向的操作比不需連線的操作效率更低,但是資料的安全性更高.
SUN一直是網路建設的支援者,所以在Java中支援sockets就不足為奇了.實際上,Java降低了建立一個sockets程式的難度.每一個傳輸模式都被封裝到了不同的類中.連線導向的類將會首先被我們討論.
Sockets有兩種主要的操作方式:連線導向的和不需連線的.連線導向的sockets操作就像一部電話,他們必須建立一個串連和一人呼叫.所有的事情在到達時的順序與它們出發時的順序時一樣.不需連線的sockets操作就像是一個郵件投遞,,沒有什麼保證,多個郵件可能在到達時的順序與出發時的順序不一樣.
到底用哪種模式是郵應用程式的需要決定的.如果可靠性更重要的話,用連線導向的操作會好一些.比如檔案伺服器需要他們的資料的正確性和有序性.如果一些資料丟失了,系統的有效性將會失去.一些伺服器,比如間歇性地發送一些資料區塊.如果資料丟了的話,伺服器並不想要再重新發過一次.因為當資料到達的時候,它可能已經過時了.確保資料的有序性和正確性需要額外的操作的記憶體消耗,額外的費用將會降低系統的回應速率.
不需連線的操作使用資料報協議.一個資料報是一個獨立的單元,它包含了所有的這次投遞的資訊.把它想象成一個信封吧,它有目的地址和要發送的內容.這個模式下的socket不需要串連一個目的的socket,它只是簡單地投出資料報.不需連線的操作是快速的和高效的,但是資料安全性不佳.
連線導向的操作使用TCP協議.一個這個模式下的socket必須在發送資料之前與目的地的socket取得一個串連.一旦串連建立了,sockets就可以使用一個流介面:開啟-讀-寫-關閉.所有的發送的資訊都會在另一端以同樣的順序被接收.連線導向的操作比不需連線的操作效率更低,但是資料的安全性更高.
SUN一直是網路建設的支援者,所以在Java中支援sockets就不足為奇了.實際上,Java降低了建立一個sockets程式的難度.每一個傳輸模式都被封裝到了不同的類中.連線導向的類將會首先被我們討論.