-
1 # Tiekt鐵鐵
-
2 # 使用者2458114238191884
其實這樣比是有問題的,http實際上是一種應用級協議,常用的是http1.0和http 1.1協議。而socket則是一個連線,它直接在鏈路層上進行連線。在該連線的基礎之可以實現各種應用級協議。如透過socket可以實現ftp協議、http、https、NetBIOS、Win、Iron等等,甚至於可以實現藍芽(藍芽連線在.net中不被支援,是因為socket所需引數的協議簇中列舉中沒有藍芽,但可以直接透過資料,實現與藍芽的通訊)。所以http是一個協議與Socket連線是沒有可比性的,在.net中,可實現http協議的連線。
正是因為socket功能的強大,所以對於socket程式設計一般用於特殊一點的協議或高效能網路要求的情況下才使用這種程式設計。如果是一般的tcp/ip,在.net中已經實現了其功能封裝。例如WebClient實現http/https,再如.net 4.5新增的HttpClient也可以實現同的功能。但這些功能較為狹窄,那麼在.net中的可插入協議是一箇中庸的選擇。目前實現的有HttpWebRequest/FtpWebRequest。並且可繼承WebRequest實現自己的可插入協議。
也就是說,如果我們與httpClient或WebClient與Scoket相比的話,WebClinet/HttpClient是實現特定功能的Socket封裝,它減少開發週期,但底層還是Socket。如果WebRequest與Socket相比的話,WebRequest是實現特定協議的Socket封閉,並可實現可插入協議。換句來說,WebClient是完完全全的一個通訊類,而WebRequest則算是一個協議開發類(它已經實現了FtpWebRequest及HttpWebRequest),而Socket則是底層開發。
回覆列表
最大區別socket是網路層,http是應用成。。 socket是一個程式元件,它支援TCP,UDP等網路通訊協議,也就是透過socket這個東西你可以和任何網際網路或區域網上的計算機通訊。。。TCP,UDP是一個網路層協議,網路層協議不管你發的內容是啥,他只負責把你想法的東西發到對面,發的是啥,他完全不管,因為他不是應用層。。。。 http是應用層協議,在socket的TCP層之上,他是管你傳送的內容是什麼的,比如你發的是啥,圖片還是文字還是影片資料流,發成功了沒有,用什麼語言發,都做了詳細的定義,這樣可以保證寫軟體的人只要按照約定處理資料,就能得到想要的結果。。。 通訊的目的就是應用,所以應用是頂層,否則你發的是坨屎,還是別的什麼,無從知道,因為資料都是二進位制資料流,必須描述清楚,約定好。。。