學習c#數據流相關,自然和套接字聯系在一起,便於深入領悟。
上來先看看實現套接字的相關類在msdn裡面的結構體系位置:
定義:
首先來自百度百科裡面是這樣定義的。套接字:多個TCP連接或多個應用程序進程可能需要通過同一個 TCP協議端口傳輸數據。為了區別不同的應用程序進程和連接,許多計算機操作系統為應用程序與TCP/IP協議交互提供了稱為套接字(Socket)的接口。
下面是自己理解。套接字:一個連接的兩個端點。也可以這樣理解,套接字是用來通信的或者說是用來數據交流的,既然要通信肯定有兩個端點,就像一個線段
的兩個端點一樣,也就像從我家到你家一樣,這條線段的兩個端點,就俗稱做所謂的套接字。
分類:
其中的一種分類是這樣的:流式套接字、數據包套接字、原始套接字。這是按照構造函數中的第二個參數來分類的。
但是我覺得這樣的分類不是很好,我更喜歡下面的分類方式:面向連接的套接字、無連接的套接字。這裡是按照第三個參數來分類的。
其實這兩種分類方式都是根據Socket類的構造函數的參數來分類的。
Socket類的構造函數為:
public Socket(
AddressFamilyaddressFamily, //網絡類型
SocketTypesocketType, //套接字類型
ProtocolTypeprotocolType); //使用的協議
測試用例代碼:
面向連接套接字實現:
無連接套接字: