c#宽带拨号

直接上代码

using System;
using System.Diagnostics;
using System.IO;
using System.Net;
using System.Net.NetworkInformation;
using System.Text;
using System.Threading;

namespace soe_client
{
    /// <summary>
    /// ADSL拨号帮助类 用批处理实现
    /// </summary>
    public class ADSLIP
    {
        #region 变量
        /// <summary>
        ///生成的临时批处理文件名称
        /// </summary>
        static String _temppath = "temp.bat";
        public static String temppath
        {
            get { return ADSLIP._temppath; }
            set { ADSLIP._temppath = value; }
        }
        /// <summary>
        /// 字符串拼接用
        /// </summary>
        private static StringBuilder sb = new StringBuilder();
        /// <summary>
        /// 拨号等待 默认15秒
        /// </summary>
        public static int delay = 15;
        #endregion

        #region 方法
        /// <summary>
        /// 开始拨号
        /// </summary>
        /// <param name="ADSL_Name">宽带连接名称</param>
        /// <param name="ADSL_UserName">宽带连接用户名</param>
        /// <param name="ADSL_PassWord">宽带连接密码</param>
        public static bool ChangeIp(String ADSL_Name = "宽带连接", String ADSL_UserName = "", String ADSL_PassWord = "")
        {
            sb.Clear();
            sb.AppendLine("@echo off");
            sb.AppendLine("set adslmingzi=" + ADSL_Name);
            sb.AppendLine("set adslzhanghao=" + ADSL_UserName);
            sb.AppendLine("set adslmima=" + ADSL_PassWord);
            sb.AppendLine("@Rasdial %adslmingzi% /disconnect");
            sb.AppendLine("ping 127.0.0.1 -n 2");
            sb.AppendLine("Rasdial %adslmingzi% %adslzhanghao% %adslmima%");
            sb.AppendLine("echo 连接中");
            sb.AppendLine("ping 127.0.0.1 -n 2");
            sb.AppendLine("ipconfig");
            // sb.AppendLine("pause");

            using (StreamWriter sw = new StreamWriter(temppath, false, Encoding.Default))
            {
                sw.Write(sb.ToString());
            }
            Process p = Process.Start(temppath);
            p.WaitForExit();
            Thread.Sleep(delay * 1000);
            while (GetIP_PPPOE() == string.Empty)
            {
                Process.Start(temppath);
                p.WaitForExit();
                Thread.Sleep(2 * delay * 1000);
            }
            File.Delete(temppath);
            return true;
        }

        public static string GetIP_PPPOE(int timeout=2)
        {
            int i = timeout * 2;
            while (i > 0)
            {
                try
                {
                    NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
                    bool havePPPOE = false;
                    foreach (NetworkInterface adapter in nics)
                    {
                        if (adapter.NetworkInterfaceType == NetworkInterfaceType.Ppp)
                        {
                            havePPPOE = true;
                            IPInterfaceProperties ip = adapter.GetIPProperties();     //IP配置信息
                            if (ip.UnicastAddresses.Count > 0)
                            {
                                return ip.UnicastAddresses[0].Address.ToString();
                            }
                        }
                    }
                    //当没有宽带连接的时候直接返回空
                    if (!havePPPOE) return string.Empty;
                }
                catch (Exception ex)
                {
                    Console.WriteLine("获取宽带拨号IP出错:" + ex.Message);
                }
                i--;
                Thread.Sleep(500);
            }
            return string.Empty;
        }
        #endregion
    }

}

原文地址:https://www.cnblogs.com/wangyinlon/p/11903429.html

时间: 2024-11-02 18:23:31

c#宽带拨号的相关文章

cisco路由器宽带拨号pppoe

(config) # vpdn enable (config) # vpdn-group pppoe (config-vpdn) #accept-dialin (config-vpdn-acc-in) # protocol pppoe (config) # inter f0/0 (config-if) # no ip address (config-if) # pppoe enable (config-if) # pppoe-client dial-pool-number 1 (config-i

-分公司网络建设----Juniper防火墙SRX240支持宽带拨号

Juniper防火墙SRX240支持宽带拨号     分公司网络建设,平时我们本地外网开通的是互联网专线,但如果公司的员工允许访问外网的人数比较少,开通专线费用较高,那么我们可以使用家庭宽带的方式解决这个问题,但是你会配置吗?我们配置过Juniper的netscreen系列的防火墙,这个系列的设备通过界面化的操作就能实现宽带拨号,但是SRX系列的防火墙也支持宽带拨号,以下面的拓扑为例,进行配置.     防火墙的ge-0/0/15口接本地外网宽带,来访问Internet,需要如下配置: set

Ubuntu pppoe宽带拨号相关问题

因为可视化界面没有相关设置,因此采用终端命令的方法. 测试环境:Ubuntu 18.0.4 pppoe的配置:$ sudo pppoeconf 然后进入此界面进行一系列宽带拨号的设置. 联网:$ sudo pon dsl-provider 断网:$ sudo poff 查看日志:$ plog 接口信息:$ ifconfig ppp0 注:net-tools 未安装可以输入命令:apt install net-tools 来进行安装. 断网问题: sudo service network-mana

派额斯宽带拨号常见错误

1.宽带连接错误651 2.宽带连接错误678 3.宽带错误691 4.宽带连接错误676 宽带连接错误651 系统操作中,连接宽带的时候会出现多种错误,较为常见的一种宽带连接错误651,错误651是调制调节器报告出错,既未找到指定的端口. 解决方法 1.右键点击桌面计算机--属性,在设备管理器页面找到"网络适配器",点击网卡右键--禁用,如下图所示,出现提示框点击确定,然后再右键启动,看看重新拨号是否正常,如果不正常请往下看! 2.设置网卡,右键点击桌面计算机--属性,在"

win7宽带连接不见了,怎么重建宽带拨号连接?

进入win7系统以后,打开控制面板,点击网络和共享中心,如下图   然后点击设置新的连接或网络,拨号vps如下图   点击选择连接到Internet,然后点击下一步,如下图   勾选‘否,创建新连接’,选择宽带连接,点击下一步,如下图   选择点击‘宽带(PPPoE)(R)’,如下图   输入宽带‘用户名’和‘密码’,输入‘连接名称’,点击连接   系统自动对账号进行联网测试,新建宽带连接设置完毕,如下图 原文地址:https://www.cnblogs.com/smileyang/p/1216

c语言完成宽带拨号

学校的网络每次开机都需要手动登陆,于是用c写了一个自动登陆的小程序... 程序功能超级简单...只是懒得每次都登陆... PS:代码功能具体没有测试...我自己用的是python 1 #include <windows.h> 2 #include <conio.h> 3 4 int main() 5 { 6 int result; 7 do{ 8 result=system("rasdial 宽带连接名字 用户名 密码") ; 9 }while(result!=

关于移动宽带拨号上网开通发现不能共享

不管在哪里工作,职业操守还是非常重要的,本来是想分享一下的,发现用户的信息太多了,我不能一个个的打码,只截一张图说明,其实宽带开通不难,操作一遍就会了,广泛的说,技术这个东西是没有难度的,不管是哪一门技术都是一样,真正难的地方应该是原理,你会这样做,但是你不一定会知道为什么要这么做,所以原理性的东西,只有多做,结合实践才能够掌握,纯靠记住,没有多大的实质性意义 原文地址:http://blog.51cto.com/vbers/2113034

通过 DDNS 解决宽带拨号 ip 变化问题

前面你的文章我已经写了 写了 DMZ 内网映射的 方式. 这样内网主机已经暴露在外网中了. 但是 拨号上网我们的ip是 会变化的.大概规律就是 每次拨号都会变化.如果不拨号,每 24 小时 ip也会自动变化一次. 怎么解决呢? 那就是使用域名. 我们通过域名 来访问 这台机子.并且在 ip 变化的时候 ,让 让域名对应的ip 也跟着变化. 这个过程叫做 DDNS .就是动态域名解析. DDNS 很多地方都有提供 .阿里有.腾讯云也有.我目前有的域名是腾讯的.所以就用腾讯 实现好了.首先找到腾讯

飞塔500D宽带拨号配置

飞塔防火墙桌面级的设备可以通过Web进行PPPOE设置,飞塔500D Web页面无法配置PPPOE,只能进入命令行模式进行配置. 配置命令: config system interface /进入接口配置子系统edit /指定接口set mode pppoe /设定模式为PPPoEset username /设定PPPoE帐号set password /设定PPPoE密码set idle-timeout /设定超时时间set distance /设定管理距离set disc-retry-time