ADSL路由切换IP

目前大部分家庭的上网方式都是基于PPPoE协议的,它是动态分配IP地址,以弥补IPv4地址短缺的问题(好期待IPv6啊,到时候把我家的每根筷子上都分配一个IP)。由于有时候需要切换IP地址,但是到路由的设置界面里切换比较麻烦,因此自己做了个小软件,这样就方便多了。我的路由是D-Link 504,大家根据自己的情况改动一下地址。

using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.IO;

namespace ChangeIP
{
    class Program
    {
        static void Main(string[] args)
        {
			//获取当前IP
            string result = GetHttpWeb("http://192.168.0.1/info.htm");
            int start = result.IndexOf("wanIP");
            int end = result.IndexOf("subMask");
            result = result.Substring(start, end - start);
            Console.Write(result);
			
			//通过路由切换IP
            GetHttpWeb("http://192.168.0.1/do_cmd.htm?CMD=WAN_CON&GO=info.htm&action=4");

			//显示进度
            char[] progress ={ '|', '/', '-', '\\' };
            for (int i = 0; i < 10; i++)
            {
                Console.Write("Changing " + progress[i % 4]);
                Console.Write('\r');
                System.Threading.Thread.Sleep(500);                
            }
            Console.WriteLine();

			//显示新的IP
            result = GetHttpWeb("http://192.168.0.1/info.htm");
            start = result.IndexOf("wanIP");
            end = result.IndexOf("subMask");
            result = result.Substring(start, end - start);
            Console.Write(result);

            Console.ReadKey(true);
        }

		
		//读取网页
        public static string GetHttpWeb(string uri)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
            request.Credentials = new NetworkCredential("admin", "");//路由的用户名和密码
            request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
            request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.2; zh-CN; rv:1.9.2) Gecko/20100115 Firefox/3.6";
            // Get the response.
            HttpWebResponse response;
            try
            {
                response = (HttpWebResponse)request.GetResponse();
            }
            catch (Exception)
            {
                throw;
            }
            // Get the stream containing content returned by the server.
            Stream dataStream = response.GetResponseStream();
            // Open the stream using a StreamReader for easy access.
            StreamReader reader = new StreamReader(dataStream, Encoding.GetEncoding("GB2312"));
            // Read the content.
            string rsp = reader.ReadToEnd();
            // Cleanup the streams and the response.
            reader.Close();
            dataStream.Close();
            response.Close();
            request.Abort();
            return rsp;
        }
    }
}

原文地址:https://www.cnblogs.com/eshizhan/p/1750646.html