VC++实现host文件读写
来源:互联网 发布:河北邮币卡交易软件 编辑:程序博客网 时间:2024/06/05 04:23
Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统再会将网址提交DNS域名解析服务器进行IP地址的解析。
现在让我们来看看Hosts在Windows中是怎么工作的。
我们知道在网络上访问网站,要首先通过DNS服务器把要访问的网络域名解析成XXX.XXX.XXX.XXX的IP地址后,计算机才能对这个网络域名作访问。
要是对于每个域名请求我们都要等待域名服务器解析后返回IP信息,这样访问网络的效率就会降低,因为DNS做域名解析和返回IP都需要时间。
为了提高对经常访问的网络域名的解析效率,可以通过利用Hosts文件中建立域名和IP的映射关系来达到目的。根据Windows系统规定,在进行DNS请求以前,Windows系统会先检查自己的Hosts文件中是否有这个网络域名映射关系。如果有,则调用这个IP地址映射,如果没有,再向已知的DNS服务器提出域名解析。也就是说Hosts的请求级别比DNS高。
下面我们来实现读写host文件
void CtesthostDlg::OnBnClickedButton1(){CString strPath;CString strSystem, strWindows;::GetSystemDirectory(strSystem.GetBuffer(MAX_PATH), MAX_PATH);::GetWindowsDirectory(strWindows.GetBuffer(32), 32);TCHAR szDriver[5] = {0};RtlCopyMemory(szDriver, strWindows.GetBuffer(), 3*sizeof(TCHAR));szDriver[3] = 0;strPath.Format("%s\\drivers\\etc\\hosts", strSystem);CStdioFile sf; CFileException e; CString strSign, strTemp, strFile;bool bOpen = sf.Open(strPath, CFile::typeText|CFile::modeRead, &e);if(bOpen) {int cnt = 0;while(sf.ReadString(strSign) != NULL) {cnt++;strFile += strSign;strFile += "\r\n"; if(strSign.Trim().GetLength() == 0 || strSign.GetAt(0)=='#'|| strSign.GetAt(0)==';')continue;strTemp.Format("%d", cnt);}sf.Close();}MessageBox(strFile); if (strFile.GetLength()>5) { } else { }// TODO: 在此添加控件通知处理程序代码}void CtesthostDlg::OnBnClickedButton2(){CString strPath;CString strSystem, strWindows;::GetSystemDirectory(strSystem.GetBuffer(MAX_PATH), MAX_PATH);::GetWindowsDirectory(strWindows.GetBuffer(32), 32);TCHAR szDriver[5] = {0};RtlCopyMemory(szDriver, strWindows.GetBuffer(), 3*sizeof(TCHAR));szDriver[3] = 0;strPath.Format("%s\\drivers\\etc\\hosts", strSystem); CString str_MSBC="8588"; CStringA str99 =(CStringA) str_MSBC;CString fileName; fileName=strPath;CStdioFile file; file.Open(fileName,CFile::modeCreate | CFile::modeWrite); file.SeekToEnd();file.Write( str99,str99.GetLength()); file.Close(); DWORD dwAttrs=GetFileAttributes(strPath); dwAttrs==INVALID_FILE_ATTRIBUTES;if (!(dwAttrs & FILE_ATTRIBUTE_READONLY)) { SetFileAttributes(strPath, dwAttrs | FILE_ATTRIBUTE_READONLY); } // TODO: 在此添加控件通知处理程序代码}
- VC++实现host文件读写
- VC读写XML文件
- VC读写INI文件
- VC读写INI文件
- VC读写XML文件
- VC读写ini文件
- VC读写INI文件
- VC读写INI文件
- VC读写INI文件
- VC读写XML文件
- VC读写XML文件
- vc 读写xml文件
- VC读写ini文件
- VC读写INI文件
- VC INI文件读写
- VC读写INI文件
- VC读写INI文件
- VC读写INI文件
- android.view.View属性介绍
- 素数
- Cocoa多线程编程笔记:NSLock与NSThread
- 九度OJ 题目17:所有员工年龄排序
- 如何使用Core Text创建一个简单的杂志图书App
- VC++实现host文件读写
- BIT1034丈量土地
- C转义序列
- 2013寒假练习 1005:穿越沙漠
- 防火墙:开启80端口-CentOS测试通过
- FAQ for imapsync
- 性与性格
- 一位软件工程师的6年总结
- C++中的operator new与new operator