Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
若要使用 UDP 而不是 TCP,需要更改協(xié)議類型,如下面的示例所示:
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
一旦創(chuàng)建 Socket,在客戶端,你將可以通過Connect方法連接到指定的服務(wù)器,并通過Send/SendTo方法向遠(yuǎn)程服務(wù)器發(fā)送數(shù)據(jù),而后可以通過Receive/ReceiveFrom從服務(wù)端接收數(shù)據(jù);而在服務(wù)器端,你需要使用Bind方法綁定所指定的接口使Socket與一個(gè)本地終結(jié)點(diǎn)相聯(lián),并通過Listen方法偵聽該接口上的請求,當(dāng)偵聽到用戶端的連接時(shí),調(diào)用Accept完成連接的操作,創(chuàng)建新的Socket以處理傳入的連接請求。使用完 Socket 后,記住使用 Shutdown 方法禁用 Socket,并使用 Close 方法關(guān)閉 Socket。其間用到的方法/函數(shù)有:
Socket.Connect方法:建立到遠(yuǎn)程設(shè)備的連接 public void Connect(EndPoint remoteEP)(有重載方法) Socket.Send 方法:從數(shù)據(jù)中的指示位置開始將數(shù)據(jù)發(fā)送到連接的 Socket。 public int Send(byte[], int, SocketFlags);(有重載方法) Socket.SendTo 方法 將數(shù)據(jù)發(fā)送到特定終結(jié)點(diǎn)。 public int SendTo(byte[], EndPoint);(有重載方法) Socket.Receive方法:將數(shù)據(jù)從連接的 Socket 接收到接收緩沖區(qū)的特定位置。 public int Receive(byte[],int,SocketFlags); Socket.ReceiveFrom方法:接收數(shù)據(jù)緩沖區(qū)中特定位置的數(shù)據(jù)并存儲終結(jié)點(diǎn)。 public int ReceiveFrom(byte[], int, SocketFlags, ref EndPoint); Socket.Bind 方法:使 Socket 與一個(gè)本地終結(jié)點(diǎn)相關(guān)聯(lián): public void Bind( EndPoint localEP ); Socket.Listen方法:將 Socket 置于偵聽狀態(tài)。 public void Listen( int backlog ); Socket.Accept方法:創(chuàng)建新的 Socket 以處理傳入的連接請求。 public Socket Accept(); Socket.Shutdown方法:禁用某 Socket 上的發(fā)送和接收 public void Shutdown( SocketShutdown how ); Socket.Close方法:強(qiáng)制 Socket 連接關(guān)閉 public void Close();
IPAddress類:IPAddress 類包含計(jì)算機(jī)在 IP 網(wǎng)絡(luò)上的地址。其Parse方法可將 IP 地址字符串轉(zhuǎn)換為 IPAddress 實(shí)例。下面的語句創(chuàng)建一個(gè) IPAddress 實(shí)例:
IPAddress myIP = IPAddress.Parse("192.168.1.2");
Dns 類:向使用 TCP/IP Internet 服務(wù)的應(yīng)用程序提供域名服務(wù)。其Resolve 方法查詢 DNS 服務(wù)器以將用戶友好的域名(如"host.contoso.com")映射到數(shù)字形式的 Internet 地址(如 192.168.1.1)。Resolve方法 返回一個(gè) IPHostEnty 實(shí)例,該實(shí)例包含所請求名稱的地址和別名的列表。大多數(shù)情況下,可以使用 AddressList 數(shù)組中返回的第一個(gè)地址。下面的代碼獲取一個(gè) IPAddress 實(shí)例,該實(shí)例包含服務(wù)器 host.contoso.com 的 IP 地址。