数据的绑定和IP的验证

      上次的IP映射还存在着两个问题,IP的验证和数据的更新。虽然数据绑定上了,可还是没有及时的更新需要刷新后才能看到更改过的地方。上次的ASPxGridView的数据绑定,

<dxwgv:ASPxGridView ID="ASPxGridView1" runat="server" AutoGenerateColumns="False"
                    CssFilePath="~/App_Themes/Soft Orange/{0}/styles.css" CssPostfix="Soft_Orange"
                    Width="100%" DataSourceID="ObjectDataSource1" KeyFieldName="id" OnRowUpdated="ASPxGridView1_RowUpdated">

数据源:

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" DataObjectTypeName="ApplicationList.Model.AdressClass" DeleteMethod="delZDCAdress" InsertMethod="insZDCAdress" SelectMethod="getAllZDCAdress" TypeName="ApplicationList.BLL.ServerAdressClass" UpdateMethod="updZDCAdress" OldValuesParameterFormatString="original_{0}"></asp:ObjectDataSource> 

 

它是直接绑定ApplicationList.BLL.ServerAdressClass类中的方法的。我在绑定后修改了config文件但是grid没有及时的更新过来,用刷新后才能看到效果。这是由于我上面的getAllAdress方法中的读取config文件的代码的问题,string allIpStr = ConfigurationManager.ConnectionStrings["ServerAddress"].ConnectionString.ToString();这种方式读取的文件是编译时加载的config文件,修改后的config没有及时加载进去因此就出现问题了。当我把它修改成

            //打开config文件
            Configuration config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
            //找到属性connectionStrings
            ConnectionStringsSection conSection = (ConnectionStringsSection)config.GetSection("connectionStrings");
            //找到name为ServerAdress的string串
            string allIpStr = conSection.ConnectionStrings[connStr].ConnectionString;

后就没有问题了。这种方法是每次打开工程下的config文件然后再读取ConnectionString串。

      另外一个问题是IP的验证,直接贴代码了。。。

 public class IPValidateClass
 {
        private static Regex RegNumber = new Regex("^[0-9]+$");
        private static Regex RegIP = new Regex("//b((?!//d//d//d)//d+|1//d//d|2[0-4]//d|25[0-5])//.((?!//d//d//d)//d+|1//d//d|2[0-4]//d|25[0-5])//.((?!//d//d//d)//d+|1//d//d|2[0-4]//d|25[0-5])//.((?!//d//d//d)//d+|1//d//d|2[0-4]//d|25[0-5])//b");

        public IPValidateClass()
  {}
  #region  成员方法

        /// <summary>
        ///验证输入IP+端口是否合法,IP+端口格式是10.72.237.68:1494
        /// </summary>
        public static Boolean ipAndPortValidate(ApplicationList.Model.AdressClass model)
        {
            string lanIp = model.LanIp;
            string wanIp = model.WanIp;
            char[] reg = { ':'};
            string[] lanNumArr = lanIp.Split(reg);
            string[] wanNumArr = wanIp.Split(reg);

            /*没有用正则表达式的判断       
            if (lanNumArr.Length != wanNumArr.Length || lanNumArr.Length > 5 || lanNumArr.Length < 4)
            {
                return false;
            }
            else
            {
                for (int i = 0; i <= lanNumArr.Length - 1; i++)
                {
                    Match m = RegNumber.Match(lanNumArr[i] + wanNumArr[i]);
                    if (!m.Success)
                    {
                        return false;
                    }
                    else
                    {
                        if (i < lanNumArr.Length - 1)
                        {
                            int lanNum = Convert.ToInt32(lanNumArr[i]);
                            int wanNum = Convert.ToInt32(wanNumArr[i]);
                            if (lanNum >= 255 || wanNum >= 255)
                            {
                                return false;
                            }
                        }
                    }
                }
            }*/

            if (lanNumArr.Length != wanNumArr.Length || lanNumArr.Length > 2)
            {
                return false;
            }
            else
            {
                Match m1 = RegNumber.Match(lanNumArr[1]);
                Match m2 = RegNumber.Match(wanNumArr[1]);
                Match m3 = RegIP.Match(lanNumArr[0]);
                Match m4 = RegIP.Match(wanNumArr[0]);
                if (!m1.Success || !m2.Success || !m3.Success || !m4.Success)
                {
                    return false;
                }
            }
           
            return true;
        }

        /// <summary>
        ///验证输入内网IP是否合法,IP格式是10.72.*.*
        /// </summary>
        public static Boolean lanIPValicate(ApplicationList.Model.AdressClass model)
        {
            string lanIp = model.LanIp;
            string[] lanNumArr = lanIp.Split('.');
            if (lanNumArr.Length != 4)
            {
                return false;
            }
            else
            {
                for (int i = 0; i <= lanNumArr.Length - 1; i++)
                {
                    if (i == 0)
                    {
                        Match m = RegNumber.Match(lanNumArr[i]);
                        if (!m.Success || Convert.ToInt32(lanNumArr[i]) >= 255)
                        {
                            return false;
                        }
                    }
                    else
                    {
                        Match m = RegNumber.Match(lanNumArr[i]);
                        if (!m.Success)
                        {
                            if (!lanNumArr[i].Equals("*"))
                            {
                                return false;
                            }
                        }
                        else
                        {
                            int lanNum = Convert.ToInt32(lanNumArr[i]);
                            if (lanNum >= 255)
                            {
                                return false;
                            }
                        }
                    }
                }
            }
            return true;
        }

        public static Boolean ipValidate(string ipStr)
        {
            Match m = RegIP.Match(ipStr);
            if (!m.Success)
            {
                return false;
            }
            return true;
        }

        #endregion  成员方法
    }

参数model是grid传过来的一行的数据。ASPxGridView挺好用的,可以研究一下。。。

### 将树莓派的IP地址与MAC地址绑定配置方法 为了实现树莓派的静态IP地址分配并与特定的MAC地址绑定,通常需要完成以下几个方面的操作: #### 1. 修改DHCP服务器中的静态映射 大多数家庭路由器都支持通过其内置的DHCP服务来为设备指定固定的IP地址。以下是具体的操作流程: - 登录到路由器管理页面(通常是`http://192.168.0.1`或`http://192.168.1.1`),使用管理员账户登录。 - 寻找“DHCP设置”或者类似的选项,在其中找到“静态地址池”或“保留地址列表”的部分。 - 添加一个新的条目,填写树莓派的MAC地址以及希望为其分配的固定IP地址[^1]。 #### 2. 使用macchanger修改树莓派的MAC地址 如果需要伪装成其他硬件设备或者测试不同的网络环境,则可能需要用到`macchanger`工具改变树莓派的实际MAC地址。按照以下步骤进行操作: ```bash # 更新包索引并安装macchanger sudo apt-get update && sudo apt-get install macchanger # 关闭无线接口(假设wifi名称为wlan0) sudo ifconfig wlan0 down # 设置新的随机MAC地址 sudo macchanger -r wlan0 # 或者手动设定一个具体的MAC地址 sudo macchanger --mac=XX:XX:XX:XX:XX:XX wlan0 # 启动无线接口 sudo ifconfig wlan0 up ``` 注意替换命令中的`XX:XX:XX:XX:XX:XX`为你想要的新MAC地址[^3]。 #### 3. 验证当前使用的IPMAC地址 确认上述更改已经生效之后,还需要验证新设臵是否成功应用到了系统当中去。可以借助一些局域网扫描工具帮助定位目标机器的位置信息。 对于已知MAC地址的情况,推荐采用`nmap`来进行快速查找: ```bash # 安装nmap程序 sudo apt-get install nmap # 开始扫描整个子网范围内的活动主机 sudo nmap -sn 192.168.x.* ``` 这里请根据自己实际所在的网络段调整最后一位数(`x`)[^4]。 另外也可以利用第三方软件比如WNetWatcher辅助发现未知节点的具体详情数据[^2]。 以上就是关于如何让树莓派保持稳定不变的公网访问入口的一些指导建议啦!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值