socket是什麼?套接字是什麼?

2021-09-23 07:51:53 字數 1480 閱讀 8880

網路程式設計就是編寫程式使兩台聯網的計算機相互交換資料。這就是全部內容了嗎?是的!網路程式設計要比想象中的簡單許多。

那麼,這兩台計算機之間用什麼傳輸資料呢?首先需要物理連線。如今大部分計算機都已經連線到網際網路,因此不用擔心這一點。

在此基礎上,只需要考慮如何編寫資料傳輸程式。但實際上這點也不用愁,因為作業系統已經提供了 socket。即使對網路資料傳輸的原理不太熟悉,我們也能通過 socket 來程式設計。

什麼是 socket?

socket 的原意是「插座」,在計算機通訊領域,socket 被翻譯為「套接字」,它是計算機之間進行通訊的一種約定或一種方式。通過 socket 這種約定,一台計算機可以接收其他計算機的資料,也可以向其他計算機傳送資料。

我們把插頭插到插座上就能從電網獲得電力**,同樣,為了與遠端計算機進行資料傳輸,需要連線到網際網路,而 socket 就是用來連線到網際網路的工具。

socket是什麼?

學習 socket,也就是學習計算機之間如何通訊,並編寫出實用的程式。

unix/linux 中的 socket 是什麼?

在 unix/linux 系統中,為了統一對各種硬體的操作,簡化介面,不同的硬體裝置也都被看成乙個檔案。對這些檔案的操作,等同於對磁碟上普通檔案的操作。

你也許聽很多高手說過,unix/linux 中的一切都是檔案!那個傢伙說的沒錯。

為了表示和區分已經開啟的檔案,unix/linux 會給每個檔案分配乙個 id,這個 id 就是乙個整數,被稱為檔案描述符(file descriptor)。例如:

通常用 0 來表示標準輸入檔案(stdin),它對應的硬體裝置就是鍵盤;

通常用 1 來表示標準輸出檔案(stdout),它對應的硬體裝置就是顯示器。

unix/linux 程式在執行任何形式的 i/o 操作時,都是在讀取或者寫入乙個檔案描述符。乙個檔案描述符只是乙個和開啟的檔案相關聯的整數,它的背後可能是乙個硬碟上的普通檔案、fifo、管道、終端、鍵盤、顯示器,甚至是乙個網路連線。

請注意,網路連線也是乙個檔案,它也有檔案描述符!你必須理解這句話。

我們可以通過 socket() 函式來建立乙個網路連線,或者說開啟乙個網路檔案,socket() 的返回值就是檔案描述符。有了檔案描述符,我們就可以使用普通的檔案操作函式來傳輸資料了,例如:

用 read() 讀取從遠端計算機傳來的資料;

用 write() 向遠端計算機寫入資料。

你看,只要用 socket() 建立了連線,剩下的就是檔案操作了,網路程式設計原來就是如此簡單!

window 系統中的 socket 是什麼?

windows 也有類似「檔案描述符」的概念,但通常被稱為「檔案控制代碼」。因此,本教程如果涉及 windows 平台將使用「控制代碼」,如果涉及 linux 平台則使用「描述符」。

與 unix/linux 不同的是,windows 會區分 socket 和檔案,windows 就把 socket 當做乙個網路連線來對待,因此需要呼叫專門針對 socket 而設計的資料傳輸函式,針對普通檔案的輸入輸出函式就無效了。

Socket套接字是什麼

應用層通過傳輸層進行資料通訊時,tcp和udp會遇到同時為多個應用程式程序提供併發服務的問題。多個tcp連線或多個應用程式程序可能需要 通過同乙個tcp協議埠傳輸資料。為了區別不同的應用程式程序和連線,許多計算機作業系統為應用程式與tcp ip協議互動提供了稱為套接字 socket 的介面,區分不同...

什麼是套接字Socket

q 什麼是套接字 socket 套接字 socket 是什麼意思?應用層通過傳輸層進行資料通訊時,tcp和udp會遇到同時為多個應用程式 程序提供併發服務的問題。多個tcp連線或多個應用程式程序可能需要通過同乙個tcp協議埠傳輸資料。為了區別不同的應用程式程序和連線,許多計算機作業系統為應用程式與t...

什麼是套接字 Socket

應用層通過傳輸層進行資料通訊時,tcp和udp會遇到同時為多個應用程式程序提供併發服務的問題。多個tcp連線或多個應用程式程序可能需要 通過同乙個tcp協議埠傳輸資料。為了區別不同的應用程式程序和連線,許多計算機作業系統為應用程式與tcp ip協議互動提供了稱為套接字 socket 的介面,區分不同...