C# Socket編程基礎入門

面向對象課上,金旭亮老師(CSDN博客專家,大牛)說,只有通過網路編程才能提升一個人的編程能力,因為在C#中的網路編程, 又要用到多線程式控制制,還要考慮通信的效率,通信的控制等,要控制數據傳送的正確性,可靠性。雖然以前接觸了一部分網路編程,但是還是理論不夠系統,所以打算在系統的學習一下網路編程的基礎理論。

1. Socket簡介

windows Socket,就是在windows下編程用的socket, socket其實就是一套網路編程機制,封裝了對網路數據流的一些控制。Socket最早本來是unix系統下的編程介面,但是後來在unix上的廣泛使用,在美國政府和軍方的推動下,TCP/IP網路的流行,以及TCP/IP模型成為標準模型,Socket也成為Unix上標準的網路編程介面。1991年微軟把Unix上面的Socket的原理引用到自己的windows平台下,所以有了現在廣泛使用的windows socket. 因為網路模型已經非常穩定了,而且多年沒有大的改變,所以在Socket的發展上也比較平緩,幾乎沒有大的改變,現在最常用的就是32位的wsock.dll.提供我們進行在windows中網路編程。

2. C#中的Socket

C#中用的Socket是在windows socket的基礎上進行封裝的類庫,更方便的使用。並且C#中還在Socket的基礎上繼續封裝了TcpListener,TcpClient,UdpClient等類庫來簡化我們的開發工作。

3. 網路中的通信

為了讓網路中的兩台電腦中的兩個進程可以進行通信,我們需要通過IP地址來標識主機,用埠號標識程序,之所以不用進程號標識程序,是因為在不同的終端上相同的程序可能會有不同的進程號,而且不同的操作系統可能也會有不同的進程號分配方式。

Socket實際上就是網路進程通信中所要使用的一些緩衝區及相應的數據結構。

4. window Socket的類型

有三種不同的windows Socket:

(1). 流式套接字(SOCK_STREAM):提供了一種可靠地,面向連接的雙向數據傳輸的服務,在這種套接字中,數據的傳送沒有差錯,不會重複發送。如果使用TCP協議發送大量數據,則需要使用這種套接字。

(2). 數據報套接字(SOCK_DGRAM): 提供無連接的,不可靠的雙向數據傳送。數據在傳送的過程中可能會丟失,但是不負責丟失的數據,並且傳送的數據以包為基本單位,包的最大為1046位元組的內容,接收到的包不保證按照發送順序。UDP協議實現了數據報套接字。

(3). 原始套接字(SOCK_RAW): 可以對較低層協議進行訪問。

網路上的所有應用程序都是基於套接字進行開發的,無論的網路遊戲還是網頁,都是在套接字的接觸上進行的再次開發。

套接字屏蔽了網路模型和TCP/IP協議的複雜性,使得網路開發變得更加

推薦閱讀:

骨科基礎 | 骨質疏鬆性骨折的治療新進展
萬法歸宗談易學應用基礎——賀雲飛
極簡素麵皮具材料包的基礎應用
調色基礎知識
風水最基礎尋龍點穴四忌

TAG:編程 | Socket | 基礎 | 入門 |