socket程式設計和web的區別?

socket程式設計和web的區別?我只是一隻陽咩咩2021-05-26 13:12:40

socket是TCP/IP程序間通訊的底層實現(當然,socket只是ipc中的一種,此外還有訊息佇列、訊號燈、共享記憶體等很多手段)。

http(s)是在socket之上封裝的一種上層通訊協議,其特點是:

1。 服務端監聽通訊,被動提供服務;客戶端主動向服務端發起連線請求,建立起通訊。

2。 每一次互動都是:客戶端主動發起請求(request),服務端被動應答(response)。

3。 服務端不能主動向客戶端推送資料。

4。 通訊的資料是基於文字格式的。二進位制資料(比如圖片等)要利用base64等手段轉換為文字後才能傳輸。

websocket也是在socket之上封裝的一種上層通訊協議,其特點是:

1。 websocket通訊的建立階段是依賴於http協議的。最初的握手階段是http協議,握手完成後就切換到websocket協議,並完全與http協議脫離了。

2。 建立通訊時,也是由客戶端主動發起連線請求,服務端被動監聽。

3。 通訊一旦建立連線後,通訊就是“全雙工”模式了。也就是說服務端和客戶端都能在任何時間自由得傳送資料,非常適合服務端要主動推送實時資料的業務場景。

4。 互動模式不再是“請求-應答”模式,完全由開發者自行設計通訊協議。

5。 通訊的資料是基於“幀(frame)”的,可以傳輸文字資料,也可以直接傳輸二進位制資料,效率高。當然,開發者也就要考慮封包、拆包、編號等技術細節。