究竟什麼是socket編程如何學習 附http連接代碼示例

Windows Linux 科技 夏曹俊 2017-06-01

如何學習網絡編程,學習網絡編程要確定你要做什麼樣的程序,如果是普通的應用程序的網絡編程,你可能對網絡內部原理不理解也沒有多大問題,直接學會網絡編程的各種接口,但如果你是要做高性能服務端程序或者是嵌入式設備的程序,那就要求你對網絡編程原理有一定理解,因為你需要解決很多複雜的問題,只看api接口是不夠的。

網絡編程我們涉及到的第一個案例概念的就是socket或者套接字,這個名字就起的讓人不容易理解,其實IT的很多概念的名字起得都讓人不容易理解,這估計也和我們IT人員高智商有關。

我試著用最簡單的話解釋一下Socket,"socket接口與網卡驅動交互的中間文件"(當然這是針對網絡編程,socket不只做網絡編程,但也可以理解就是接口與驅動交互的中間文件)。

你發送網絡數據先把數據寫入到這個文件中,再有系統讀取此文件使用硬件驅動發出數據;

接收數據也是有驅動接收到數據後內部緩存,做了包驗證和排序之後再寫入到socket文件中,你這是就可以通過socket api來讀取這個數據,在inux還可以使用系統的read函數來接收網絡數據。

為什麼需要這個中間文件,第一個原因就是封裝TCP/IP協議了,第二個原因是我們的Linux和windows系統都是非實時系統,所有指令不是立刻執行的,需要交由系統來調度執行,那必然要有有緩衝存儲的地方。

下面我們通過一段http客戶端連接的代碼來理解下socket,代碼是windows版本,linux版本基本只需要改下頭文件。

究竟什麼是socket編程如何學習 附http連接代碼示例

究竟什麼是socket編程如何學習 附http連接代碼示例

究竟什麼是socket編程如何學習 附http連接代碼示例

更多內容可以在網上搜索 “夏曹俊 socket”

相關推薦

推薦中...