Java中Http和Socket是什么关系?
人生最曼妙的风景,竟是内心的淡定与从容!
首先,socket是長連接這個說法有問題,socket是應用層與TCP/IP協定族通訊的中間軟體抽象層。它既可使用下層的 TCP,也可以使用UDP。 Http是基於TCP的,HTTP協定的長連接和短連接,實質上是TCP協定的長連接和短連接。
長連接和短連接都是相對的。 長連線:建立一個連線後保持一段時間,這段時間多個請求和回應使用這個連線。 短連接:每次要求建立一個連接,等伺服器回應返回就關閉連接。
HTTP/1.0是短連接,HTTP/1.1支援長連接,HTTP/2又有改進。這些改進背後的需求是什麼? HTTP的歷史推薦看下
準確來說HTTP是基於TCP/IP。
TCP/IP可長可短,而HTTP主要把它用成短的。
HTTP也可以是長的,只有伺服器和瀏覽器一直不關連結就可以了,曾經就流行過這樣的方法實現伺服器即時通知(搜尋http comet就知道了)。
HTTP只是"不要求"長連接, 你可以keepalive也可以傳完立刻關掉socket, 都沒有問題.
問【為什麼】之前,請先研究清楚【是不是】!
首先,socket是長連接這個說法有問題,socket是應用層與TCP/IP協定族通訊的中間軟體抽象層。它既可使用下層的 TCP,也可以使用UDP。 Http是基於TCP的,HTTP協定的長連接和短連接,實質上是TCP協定的長連接和短連接。
長連接和短連接都是相對的。
長連線:建立一個連線後保持一段時間,這段時間多個請求和回應使用這個連線。
短連接:每次要求建立一個連接,等伺服器回應返回就關閉連接。
HTTP/1.0是短連接,HTTP/1.1支援長連接,HTTP/2又有改進。這些改進背後的需求是什麼? HTTP的歷史推薦看下
準確來說HTTP是基於TCP/IP。
TCP/IP可長可短,而HTTP主要把它用成短的。
HTTP也可以是長的,只有伺服器和瀏覽器一直不關連結就可以了,曾經就流行過這樣的方法實現伺服器即時通知(搜尋http comet就知道了)。
HTTP只是"不要求"長連接, 你可以keepalive也可以傳完立刻關掉socket, 都沒有問題.
問【為什麼】之前,請先研究清楚【是不是】!