一、使用DNS进行地址解析
IP地址是一种在Internet上给主机进行编址的方式。IP地址由32位二进制数组成,为了使用方便,常以XXX.XXX.XXX.XXX形式表示,每组XXX代表小于等于255的十进制正整数。在Internet中,IP地址是唯一的。本节所说的IP地址不涉及IPv6地址,而是IPv4地址。由于数字记忆效果很差,因此使用主机名称进行访问,也就是通常所说的网址。这种由主机名称到IP地址之间的转换通常由DNS服务器完成。
本节介绍如何在C#中进行主机名称的查找:
using System.Net;
class program
{
static void Main(string[ ] args)
{
//定义一个IPHostEntry类型变量,用于表示主机地址
IPHostEntry host;
//获取www.baidu.com的地址解析,存储于host变量中
host=Dns.GetHostEntry("www.baidu.com");
//获取所有与www.baidu.com关联的IP地址
foreach(IPAddress ip in host.AddressList)
{
Console.WriteLine(ip.ToString());//输出
}
}
}
运行结果:
202.108.22.43
202.108.22.5
请按任意键继续。。。。。
打开IE浏览器,输入解析得到的结果“202.108.22.43”并浏览,同样202.108.22.5结果一样。
二、用C#实现FTP浏览
FTP的中文名称为文件传输协议,它是一个用于在两台装有不同操作系统的机器中传输计算机文件的软件标准。它属于网络协议组的应用层。FTP一般通过两个连接进行操作,一个用于发送命令,另一个用于数据传输。FTP协议的具体规范请参考“http://www.ietf.org/rfc/rfc0959.txt”,这是一份标准的FTP协议文档。进行FTP应用类软件的开发都应该按照标准的FTP协议进行规范地开发。
Windows操作系统附带了几个进行FTP客户端操作的方法,其中一种是使用控制台。打开控制台,输入ftp,并按回车键,在"ftp>“提示符后即可输入ftp操作命令,输入"?"可以查看所有的FTP命令如下:
! delete literal prompt send
? debug ls put status
append dir mdelete pwd trace
ascii disconnect mdir quit type
bell get mget quote user
binary glob mkdir recv verbose
bye hash mls remotehelp
cd help mput rename
close lcd open rmdir
输入”open ftp.microsoft.com",控制台输出如下:
Connected to ftp.microsoft.com
220 Microsoft FTP Service
User (ftp.microsoft.com:(none)):
此时提示输入用户名,输入"anonymous",按回车键,输出如下:
331 Anonymous access allowed, send identity (e-mail name) as password
Password:
此时提示输入密码,输入"anonymous@microsoft.com",按回车键,输出如下:
230-Welcome to FTP.MICROSOFT.COM. Also visit http://www.microsoft.com/downloads.
230 Anonymous user logged in.
ftp>
此时登录FTP的过程已经结束,输入"ls",按回车键,输出如下:
200 PORT command successful.
150 Opening ASCII mode data connection for file list.
bussys
deskapps
developr
KBHelp
MISC
MISC1
peropsys
products
pss
ResKit
Services
Softlib
226 Transfer complete.
ftp:收到101字节,用时0.00Seconds 101000.00Kbytes/sec.
此处输入"ls"的作用是列出当前的目录,可以看到ftp.microsoft.com站点下的目录共有13个。输入“cd Softlib”,按回车键,输出如下:
250 XWD command successful
提示已成功进入该目录,再次输入“ls”,按回车键,输出如下。
200 PORT command successful.
150 Opening ASCII mode data connection for file list.
index.txt
MSLFILES
README.TXT
226 Transfer complete.
ftp:收到33字节,用时0.00Seconds 33000.00Kbytes/sec.
可以看到此处有一个目录和两个文本文件,使用get命令可以获取文件。输入“get README.TXT”,按回车键,输出如下:
200 PORT command successful.
150 Opening ASCII mode data connection for README.TXT(2401 bytes).
226 Transfer complete.
ftp:收到2401字节,用时0.00Seconds 2401000.00Kbytes/sec.
文件已被成功下载。如果编写一个FTP客户端程序,其本质就是要使用C#提供的网络库执行类似的一个过程。由于C#中没有提供专用的FTP客户端组件,所以要实现一个专业的FTP客户端必须编写大量代码。
本节提供一个简单的访问FTP方法:
为窗体添加一个WebBrowser控件,编写窗体Load事件的代码如下:
public partial class Form1:Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender,EventArgs e)
{
//给出要访问ftp服务器的网址,用其声明一个Uri变量
Uri u=new Uri("ftp://ftp.microsoft.com");
//将要访问ftp服务器网址的Uri变量赋值给WebBrowser控件
webBrowser1.Url=u;
}
}