2013-04-26 193 views
2

我不知道什麼插座意味着什麼。 服務器在特定計算機上運行,​​並具有綁定到特定端口號的套接字。服務器只是在等待,監聽客戶端的套接字以發出連接請求。 當服務器接受連接時,它會獲得綁定到同一本地端口的新套接字,並且其遠程端點將設置爲客戶端的地址和端口。 它需要一個新的套接字,以便它可以繼續偵聽原始套接字的連接請求,同時趨向於連接的客戶端的需要。究竟是什麼插座

那麼,套接字是在內存中創建的一些類?對於每一個客戶端連接,都會在內存中創建這個類的新實例?內部套接字寫入連接的客戶端的本地端口和端口以及IP編號。有人可以更詳細地解釋我的socket的定義嗎?

由於

+0

我想你已經得到了...... – stdcall 2013-04-26 09:36:56

+1

請檢查http://stackoverflow.com/faq#questions – gprathour 2013-04-27 06:46:42

回答

8

套接字有效是一種類型的文件句柄的,它的後面可以躺在的網絡會話。

您可以像讀取任何其他文件句柄一樣對其進行讀寫(大部分),並將數據發送到並來自會話的另一端。

您描述的具體操作是針對套接字的服務器端。服務器建立(綁定)可用於接受傳入連接的套接字。一旦接受,你會得到另一個套接字用於已建立的會話,以便服務器可以返回並在原始套接字上偵聽更多傳入連接。

它們在內存中的表現方式取決於您的抽象級別。

在C的最低級別,它們只是文件描述符,一個小整數。但是,您可能有更高級的Socket,它封裝了低級套接字的行爲。

+0

說'它背後是網絡會話的*端點*'會更準確。 – EJP 2013-04-26 09:54:36

0

據 「TCP/IP套接字C-實用指南程序員在」 由Michael J. Doonahoo &肯尼斯L.卡爾弗特(Chptr 1,第1.4節,第7頁):

套接字是一個應用程序可以通過該接口發送和接收數據,這與開放文件允許應用程序讀寫數據以穩定存儲的方式大致相同。 套接字允許應用程序「插入」網絡,並與其他也插入同一網絡的應用程序進行通信 。 由一臺機器上的應用程序寫入套接字的信息可以是由另一臺機器上的應用程序讀取的 ,反之亦然。

請參閱此書以從程序員角度瞭解套接字的清晰度。