首先你們要知道在瀏覽器上瀏覽虛擬主機,必須使用Hosts文件或域名系統(DNS)實現主機名到IP地址的解析。在局域網中用Hosts文件或DNS均可以,在Internet上只能用DNS了。
瀏覽器
1.當用戶輸入一個域名以百度爲例(www.baidu.com)。網絡
2.首先會到C:\Windows\System32\drivers\etc目錄中用Hosts文件去查詢相關的IP是否存在,若是存在就會訪問該IP地址。dom
3.不存在該域名解析,那麼就會到公網DNS查找。工具
當你訪問域名出現異常,可能Hosts文件被修改了或者DNS被挾持了。ui
解決方案:spa
1.首先檢查你的C:\Windows\System32\drivers\etc目錄下的Hosts文件查看是否存在域名強制轉向IP的狀況,有的話把這個選項去掉。找不到文件設置隱藏文件可見。code
2.DNS被劫持或篡改了。你能夠手動修改本地電腦的DNS,默認爲空以下圖,你能夠在首選設置爲:114.114.114.114,備用設置爲:114.114.115.115;並查殺一下病毒。或者你的路由器被篡改了(設置的密碼太弱),建議用修復工具修改。blog
上面介紹了網絡正常域名訪問出問題的緣由,那麼下面就帶你們使用C#搞一個Hosts修改工具(你們能夠來研究,瞭解技術,可是不要用來惡搞他人):ip
private static void updateHosts(string ip,string domain) { string path = @"C:\WINDOWS\system32\drivers\etc\hosts"; //一般狀況下這個文件是隻讀的,因此寫入以前要取消只讀 File.SetAttributes(path, File.GetAttributes(path) & (~FileAttributes.ReadOnly));//取消只讀 //1.建立文件流 FileStream fs =ip==""? new FileStream(path, FileMode.Create): new FileStream(path, FileMode.Append); //2.建立寫入器 StreamWriter sw = new StreamWriter(fs, Encoding.UTF8); //3.開始寫入 bool result = false;//標識是否寫入成功 try { StringBuilder sb = new StringBuilder(); sb.Append(ip);//IP地址 sb.Append(" "); sb.Append(domain);//網址 sw.WriteLine(sb.ToString()); result = true; } catch (Exception ex) { result = false; } finally { //4.關閉寫入器 if (sw != null) { sw.Close(); } //5.關閉文件流 if (fs != null) { fs.Close(); } } if (result == true) { MessageBox.Show("成功!"); File.SetAttributes(path, File.GetAttributes(path) | FileAttributes.ReadOnly);//設置只讀 } else { MessageBox.Show("失敗!"); return; } }
在網址部分輸入www.baidu.com,以後添加試試看,你還能訪問百度嗎?路由
不要緊,以後你點清除,你又能夠訪問了!
源碼地址:https://files.cnblogs.com/files/jiyuwu/HostsEdit.zip