.NET提供了兩個(gè)用于網(wǎng)絡(luò)編程的名空間: System.Net和System.Net.Socket.這些類和方法可以幫助我們進(jìn)行網(wǎng)絡(luò)編程,通過網(wǎng)絡(luò)進(jìn)行通信.通信可以是面向連接的,也可以是面向無連接的;既可以采用數(shù)據(jù)流模式,也可以采用數(shù)據(jù)報(bào)的模式.廣泛使用的TCP協(xié)議用基于數(shù)據(jù)流的通信,而UDP協(xié)議用于基于數(shù)據(jù)報(bào)的通信.
System.Net.Sokcets.Socket 是System.Net.Sockets名空間下面一個(gè)非常重要的類. 每一個(gè)套接字的實(shí)例都有一個(gè)本地的和一個(gè)遠(yuǎn)程的端點(diǎn)附加在上面.本地的端點(diǎn)包括了當(dāng)前套接字實(shí)例的連接信息.
.NET還提供了其它的一些類用于我們進(jìn)行網(wǎng)絡(luò)編程,像IPEndPoint, IPAddress, SocketException等等. .NET 支持同步和異步兩種在客戶機(jī)和服務(wù)器之間的通信方式..NET提供了不同的方法用于支持這兩種類型的通信.同步的方法工作在阻塞模式,方法在工作完成之前是不返回的.但是異步的方法工作在非阻塞模式,但是立即返回的,可能在操作完成之前.
Dns類
Dns位于System.net名空間下,它用于創(chuàng)建和發(fā)送一個(gè)請求用于從DNS服務(wù)器獲取一個(gè)主機(jī)服務(wù)器的信息.當(dāng)然,在訪問DNS之前,機(jī)器必須首先要連接到網(wǎng)絡(luò)上,當(dāng)在一臺(tái)獨(dú)立的機(jī)器上執(zhí)行DNS查詢時(shí),由于無法連接到DNS服務(wù)器,就會(huì)產(chǎn)生一個(gè) Systm.Net.SocketException異常.這個(gè)類的所有成員方法都是靜態(tài)的.這個(gè)類中最重要的方法是:
public static IPHostEntry GetHostByAddress(string address)
地址應(yīng)該是一個(gè)用點(diǎn)開的正確的IP地址,這個(gè)方法返回一個(gè)IPHostEntry 實(shí)例,它包括了主機(jī)的信息.如果DNS服務(wù)器不可用,這個(gè)方法將產(chǎn)生一個(gè)SocketException異常.
public static string GetHostName()
這個(gè)方法返回本地機(jī)器的DNS服務(wù)器名稱.
public static IPHostEntry Resolve(string hostname)
這個(gè)方法解析一個(gè)DNS主機(jī)名稱或IP地址為一個(gè)IPHostEntry實(shí)例. 主機(jī)名稱應(yīng)該是一個(gè)用點(diǎn)分開的IP地址,如:127.0.0.1www.rohu.com.
IPHostEntry 類
IPHostEntry 類是一個(gè)容器類,它包含INTERNET上主機(jī)的地址信息.這個(gè)類不是線程安全的.下面是這個(gè)類的幾個(gè)重要成員.
AddressList 屬性
該屬性給出一個(gè)IPAddress的數(shù)組,可以獲取或設(shè)置與主機(jī)關(guān)聯(lián)的 IP 地址列表.
Aliases 屬性
該屬性用于獲取或設(shè)置與主機(jī)關(guān)聯(lián)的別名列表。
下面的程序用到了上面提到的兩個(gè)類.
using System;
using System.Net;
using System.Net.Sockets;
class MyClient
{
public static void Main()
{
IPHostEntry IPHost = Dns.Resolve("www.rohu.com");
Console.WriteLine(IPHost.HostName);
string[] aliases = IPHost.Aliases;
Console.WriteLine(alises.Length);
IPAddress[] addr = IPHost.AddressList;
Console.WriteLine(addr.Length);
for(int i=0; i<addr.Length; i++)
{
Console.Writeline(addr[i]);
}
}
}
IPEndPoint 類
這是一個(gè)從抽象類EndPoint繼承而來的一個(gè)類,它將網(wǎng)絡(luò)端點(diǎn)表示為 IP 地址和端口號(hào)。下面展示的是這個(gè)類的使用.
IPEndPoint(long address ,int port)
IPEndPoint(IPAddress addr, int port)
IpHostEntry IPHost = Dns.Resolve("www.rohu.com");
Console.WriteLine(IPHost.HostName);
string[] aliases = IPHost.Aliases;
IPAddress[] addr = IPHost.AddressList;
Console.WriteLine(addr[0]);
EndPoint ep = new IPEndPoint(addr[0], 80);
聯(lián)系客服