Socket 簡單通信事例 (C#版)

Socket 簡單通信事例 (C#版)

 

Socket 在網絡通信上是很常用的類型,在本文中只做事例,並不解析原理,如果想了解原理自行到搜索引擎中查找。

 

MSDN 文檔: http://msdn.microsoft.com/zh-cn/library/vstudio/system.net.sockets.socket.aspx

 

在Socket 通信是由服務端和客戶端形成,可以有多個服務端或者多個客戶端組成。

本文爲了讓一些初學者瞭解Socket通訊基礎用法而寫的。

 

在Socket通訊中主要使用的類有IPEndPointSocket 類,它們是在System.Net 和 System.Net.Sockets命名空間裏面。

 

服務端使用方法:

 

第一步:創建預設端口如使用本機的9050端口用來通訊

                   IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 9050);//本機預使用的IP和端口

第二步:實例Socket容器,這裏使用的是IPv4協議的TCP通訊

                   Socket _Socket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);

第三步:綁定監聽端口

                   _Socket.Bind(ipep);//綁定

                   設置監聽列隊長度

                   _Socket.Listen(int.MaxValue);//監聽列隊長度

                   服務端啓動完成

第四步:監聽新客戶連接,調用_Socket.Accept(); 方法等待獲取到一個用戶連接返回該連接通訊的容器Socket 的引用。可以再重複調用該方法獲取更多的用戶連接

                   Socket client =_Socket.Accept();//當有可用的客戶端連接嘗試時執行,並返回一個新的socket,用於與客戶端之間的通信

獲取用戶通訊地址可以通過client.RemoteEndPoint 來獲取

                   IPEndPoint clientip = (IPEndPoint)client.RemoteEndPoint;//獲取用戶IP地址信息和通訊端口

                   string ip =clientip.Address.ToString();int port = clientip.Port;

第五步:發送信息給已連接的用戶

                   client.Send(data);

第六步:等待接收已連接用戶的信息,返回該信息的長度,參數要求一個byte[] 容器這裏事例定義了長度爲1024

                   byte[] data =newbyte[1024];

                   int recv =client.Receive(data);

                   如果返回長度0就是說明用戶斷開連接

第七步:斷開和關閉服務端

                   如果有客戶端連接首先把所有的客戶端連接斷開關閉方法client.Close();

                   最後才關閉服務端連接 _Socket.Close();

 

客戶端使用方法:

 

第一步:創建連接端口信息

                   IPEndPoint ie = new IPEndPoint(IPAddress.Parse(ipadd),port);//服務器的IP和端口

第二步:創建連接容器Socket 的實例

                   Socket newclient = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);

第三部:使用容器連接到服務器

                   newclient.Connect(ie);

                   因爲這裏是客戶端所以不用監聽端口

第四步:接收發送信息到服務器

                   接收信息方法 int recv =newclient.Receive(data);

                   發送信息方法 client.Send(data);

                   該方法和服務端一樣的使用方式

第五步:客戶端斷開和關閉連接

                   newclient.Shutdown(SocketShutdown.Both);

                   newclient.Close();

 

 

事例下載地址 http://download.csdn.net/detail/pc_286/5892169

 

文件說明

服務端SocketServerApp.rar

客戶端SocketClient.rar

 

包含兩套事例

第一套是控制檯模式的一個客戶端通訊事例,相關項目是服務端DemoServer,客戶端SocketClient

第二套是WPF界面的模式支持多個客戶端通訊,使用Socket 結合多線程的事例

                   服務端 SocketServerApp

                   客戶端 SocketClientApp

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章