利用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不一样。

posted on 2010-09-07 00:01  zqonline  阅读(773)  评论(0编辑  收藏  举报

导航