zoukankan      html  css  js  c++  java
  • 利用DotRAS组件,实现ADSL的自动拨号断网自动化操作[转]

    有些场合,为了避免服务对用户IP的限制或者为了用户的方便,可以通过代码实现自动化的拨号或者断网操作,通过DotRAS组件,可以非常方便的实现如ADSL、VPN等拨号以及相关操作,DotRAS组件是专门提供这样远程访问服务的模块,本文介绍如何通过应用该组件,实现ADSL网络的拨号、断网、获取用户IP的操作。

    DotRAS组件的项目地址是:http://dotras.codeplex.com/  

    先看看Demo的界面效果

     

    具体的代码逻辑,是通过列出电话簿里面的拨号连接,设置是通过账户密码或者默认账户设置信息,进行拨号即可,使用DotRas组件,使得在DotNet中操作这些功能非常方便,代码贴上如下所示:

            /// <summary>
            
    /// 测试拨号连接
            
    /// </summary>
            private void btnTest_Click(object sender, EventArgs e)
            {
                
    try
                {
                    RasDialer dialer 
    = new RasDialer();
                    dialer.EntryName 
    = "联通网络";
                    dialer.PhoneNumber 
    = " ";
                    dialer.AllowUseStoredCredentials 
    = true;
                    dialer.PhoneBookPath 
    = RasPhoneBook.GetPhoneBookPath(RasPhoneBookType.AllUsers);
                    dialer.Timeout 
    = 1000;
                    dialer.Dial();

                    Thread.Sleep(100);
                    
    this.LoadConnections();
                }
                
    catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }
            }

            /// <summary>
            
    /// 断开网络连接
            
    /// </summary>
            private void btnLogout_Click(object sender, EventArgs e)
            {
                ReadOnlyCollection
    <RasConnection> conList = RasConnection.GetActiveConnections();
                
    foreach (RasConnection con in conList)
                {
                    con.HangUp();
                }

                this.LoadConnections();
            }

            private void Form1_Load(object sender, EventArgs e)
            {
                 
    this.LoadConnections();
            }

            /// <summary>
            
    /// 显示活动的连接
            
    /// </summary>
            private void LoadConnections()
            {
                
    this.comboBox1.Items.Clear();
                
    this.comboBox1.Items.Add(new ComboBoxItem("请选择一个链接..."null));
                
    foreach (RasConnection connection in RasConnection.GetActiveConnections())
                {
                    
    this.comboBox1.Items.Add(new ComboBoxItem(connection.EntryName, connection.EntryId));
                }

                this.comboBox1.SelectedIndex = 0;
            }

            private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
            {
                
    this.GetAddressButton.Enabled = this.comboBox1.SelectedIndex > 0;
            }

            /// <summary>
            
    /// 获取IP地址信息
            
    /// </summary>
            private void GetAddressButton_Click(object sender, EventArgs e)
            {
                StringBuilder sb 
    = new StringBuilder();
                
    foreach (RasConnection connection in RasConnection.GetActiveConnections())
                {
                    
    if (connection.EntryId == (Guid)((ComboBoxItem)this.comboBox1.SelectedItem).Value)
                    {
                        RasIPInfo ipAddresses 
    = (RasIPInfo)connection.GetProjectionInfo(RasProjectionType.IP);
                        
    if (ipAddresses != null)
                        {
                            sb.AppendFormat(
    "ClientIP:{0}\r\n", ipAddresses.IPAddress.ToString());
                            sb.AppendFormat(
    "ServerIP:{0}\r\n", ipAddresses.ServerIPAddress.ToString());
                        }
                    }
                    sb.AppendLine();
                }
                MessageBox.Show(sb.ToString());
            }

    通过以上的代码,可以非常方便实现宽带的拨号连接和获取IP等设置,不过断网之后,一般的IP还是和原来一样,这个可能和服务器的缓存有关系,为了实现拨号后,本地为不同的IP设置,需要特别的处理才可以。 

    主要研究技术:代码生成工具、Visio二次开发、送水管理软件等共享软件开发
        
      转载请注明出处:
    撰写人:伍华聪  http:
    //www.iqidi.com 

    不错,不过,原作者,没有说,怎么让每次拔号之号,IP不一样。

  • 相关阅读:
    net-speeder 安装
    CentOS 5/6 下添加epel源
    让进程在后台可靠运行的几种方法
    学习supervisor
    SQLAlchemy tutorial
    Ubuntu包管理工具整理
    Photoshop保存文件时的选项
    python反射
    python包管理(distutils、easy_install、pip、setup.py/requirements.txt、wheel)
    python 一句话输出26个英文字母
  • 原文地址:https://www.cnblogs.com/zqonline/p/1820198.html
Copyright © 2011-2022 走看看