IP查询的方法(PHP和C#)

首先下载最新的:(纯真)qqwry.dat文件


C #中的使用方法:

class IPHelper
    {
        FileStream ipFile;
        long ip;
        string ipfilePath;

        ///<summary>
        /// 构造函数
        ///</summary>
        ///<param name="ipfilePath">纯真IP数据库路径</param>
        public IPHelper(string ipfilePath)
        {
            this.ipfilePath = ipfilePath;
        }
        ///<summary>
        /// 地理位置,包括国家和地区
        ///</summary>
        public struct IPLocation
        {
            public string country, area;
        }
        ///<summary>
        /// 获取指定IP所在地理位置
        ///</summary>
        ///<param name="strIP">要查询的IP地址</param>
        ///<returns></returns>
        public IPLocation GetIPLocation(string strIP)
        {
            ip = IPToLong(strIP);
            ipFile = new FileStream(ipfilePath, FileMode.Open, FileAccess.Read);
            long[] ipArray = BlockToArray(ReadIPBlock());
            long offset = SearchIP(ipArray, 0, ipArray.Length - 1) * 7 + 4;
            ipFile.Position += offset;//跳过起始IP
            ipFile.Position = ReadLongX(3) + 4;//跳过结束IP

            IPLocation loc = new IPLocation();
            int flag = ipFile.ReadByte();//读取标志
            if (flag == 1)//表示国家和地区被转向
            {
                ipFile.Position = ReadLongX(3);
                flag = ipFile.ReadByte();//再读标志
            }
            long countryOffset = ipFile.Position;
            loc.country = ReadString(flag);

            if (flag == 2)
            {
                ipFile.Position = countryOffset + 3;
            }
            flag = ipFile.ReadByte();
            loc.area = ReadString(flag);

            ipFile.Close();
            ipFile = null;
            return loc;
        }
        ///<summary>
        /// 将字符串形式的IP转换位long
        ///</summary>
        ///<param name="strIP"></param>
        ///<returns></returns>
        public long IPToLong(string strIP)
        {
            byte[] ip_bytes = new byte[8];
            string[] strArr = strIP.Split(new char[] { '.' });
            for (int i = 0; i < 4; i++)
            {
                ip_bytes[i] = byte.Parse(strArr[3 - i]);
            }
            return BitConverter.ToInt64(ip_bytes, 0);
        }
        ///<summary>
        /// 将索引区字节块中的起始IP转换成Long数组
        ///</summary>
        ///<param name="ipBlock"></param>
        long[] BlockToArray(byte[] ipBlock)
        {
            long[] ipArray = new long[ipBlock.Length / 7];
            int ipIndex = 0;
            byte[] temp = new byte[8];
            for (int i = 0; i < ipBlock.Length; i += 7)
            {
                Array.Copy(ipBlock, i, temp, 0, 4);
                ipArray[ipIndex] = BitConverter.ToInt64(temp, 0);
                ipIndex++;
            }
            return ipArray;
        }
        ///<summary>
        /// 从IP数组中搜索指定IP并返回其索引
        ///</summary>
        ///<param name="ipArray">IP数组</param>
        ///<param name="start">指定搜索的起始位置</param>
        ///<param name="end">指定搜索的结束位置</param>
        ///<returns></returns>
        int SearchIP(long[] ipArray, int start, int end)
        {
            int middle = (start + end) / 2;
            if (middle == start)
                return middle;
            else if (ip < ipArray[middle])
                return SearchIP(ipArray, start, middle);
            else
                return SearchIP(ipArray, middle, end);
        }
        ///<summary>
        /// 读取IP文件中索引区块
        ///</summary>
        ///<returns></returns>
        byte[] ReadIPBlock()
        {
            long startPosition = ReadLongX(4);
            long endPosition = ReadLongX(4);
            long count = (endPosition - startPosition) / 7 + 1;//总记录数
            ipFile.Position = startPosition;
            byte[] ipBlock = new byte[count * 7];
            ipFile.Read(ipBlock, 0, ipBlock.Length);
            ipFile.Position = startPosition;
            return ipBlock;
        }
        ///<summary>
        /// 从IP文件中读取指定字节并转换位long
        ///</summary>
        ///<param name="bytesCount">需要转换的字节数,主意不要超过8字节</param>
        ///<returns></returns>
        long ReadLongX(int bytesCount)
        {
            byte[] _bytes = new byte[8];
            ipFile.Read(_bytes, 0, bytesCount);
            return BitConverter.ToInt64(_bytes, 0);
        }
        ///<summary>
        /// 从IP文件中读取字符串
        ///</summary>
        ///<param name="flag">转向标志</param>
        ///<returns></returns>
        string ReadString(int flag)
        {
            if (flag == 1 || flag == 2)//转向标志
                ipFile.Position = ReadLongX(3);
            else
                ipFile.Position -= 1;

            List<byte> list = new List<byte>();
            byte b = (byte)ipFile.ReadByte();
            while (b > 0)
            {
                list.Add(b);
                b = (byte)ipFile.ReadByte();
            }
            return Encoding.Default.GetString(list.ToArray());
        }
    }
调用如下:

static void Main(string[] args)
        {
            string ipfilePath = @"D:\qqwry.dat";
            IPHelper IPHelper = new IPHelper(ipfilePath);
            string ip = "72.51.27.51";
            IPHelper.IPLocation loc = IPHelper.GetIPLocation(ip);
            Console.WriteLine("你查的ip是:{0} 地理位置:{1} {2}", ip, loc.country, loc.area);
            Console.ReadKey();
        }

PHP中使用:

<?php 
header("content-type:text/html;charset=gb2312");
//*
//文件头 [第一条索引的偏移量 (4byte)] + [最后一条索引的偏移地址 (4byte)]     8字节
//记录区 [结束ip (4byte)] + [地区1] + [地区2]                                4字节+不定长
//索引区 [开始ip (4byte)] + [指向记录区的偏移地址 (3byte)]                   7字节
//注意:使用之前请去网上下载纯真IP数据库,并改名为 "CoralWry.dat" 放到当前目录下即可.
//by 查询吧 www.query8.com
//*
class ipLocation {
var $fp;
var $firstip;  //第一条ip索引的偏移地址
var $lastip;   //最后一条ip索引的偏移地址
var $totalip;  //总ip数
//*
//构造函数,初始化一些变量
//$datfile 的值为纯真IP数据库的名子,可自行修改.
//*
function ipLocation($datfile = "qqwry.dat"){
  $this->fp=fopen($datfile,'rb');   //二制方式打开
  $this->firstip = $this->get4b(); //第一条ip索引的绝对偏移地址
  $this->lastip = $this->get4b();  //最后一条ip索引的绝对偏移地址
  $this->totalip =($this->lastip - $this->firstip)/7 ; //ip总数 索引区是定长的7个字节,在此要除以7,
  register_shutdown_function(array($this,"closefp"));  //为了兼容php5以下版本,本类没有用析构函数,自动关闭ip库.
}
//*
//关闭ip库
//*
function closefp(){
fclose($this->fp);
}
//*
//读取4个字节并将解压成long的长模式
//*
function get4b(){
  $str=unpack("V",fread($this->fp,4));
  return $str[1];
}
//*
//读取重定向了的偏移地址
//*
function getoffset(){
  $str=unpack("V",fread($this->fp,3).chr(0));
  return $str[1];
}
//*
//读取ip的详细地址信息
//*
function getstr(){
  $split=fread($this->fp,1);
  $str="";
  while (ord($split)!=0) {
    $str.=$split;
        $split=fread($this->fp,1);
  }
  return $str;
}
//*
//将ip通过ip2long转成ipv4的互联网地址,再将他压缩成big-endian字节序
//用来和索引区内的ip地址做比较
//*
function iptoint($ip){
  return pack("N",intval(ip2long($ip)));
}
//*
//获取客户端ip地址
//注意:如果你想要把ip记录到服务器上,请在写库时先检查一下ip的数据是否安全.
//*
function getIP() {
        if (getenv('HTTP_CLIENT_IP')) {
                                $ip = getenv('HTTP_CLIENT_IP'); 
                }
                elseif (getenv('HTTP_X_FORWARDED_FOR')) { //获取客户端用代理服务器访问时的真实ip 地址
                                $ip = getenv('HTTP_X_FORWARDED_FOR');
                }
                elseif (getenv('HTTP_X_FORWARDED')) { 
                                $ip = getenv('HTTP_X_FORWARDED');
                }
                elseif (getenv('HTTP_FORWARDED_FOR')) {
                                $ip = getenv('HTTP_FORWARDED_FOR'); 
                }
                elseif (getenv('HTTP_FORWARDED')) {
                                $ip = getenv('HTTP_FORWARDED');
                }
                else { 
                                $ip = $_SERVER['REMOTE_ADDR'];
                }
                return $ip;
}
//*
//获取地址信息
//*
function readaddress(){
  $now_offset=ftell($this->fp); //得到当前的指针位址
  $flag=$this->getflag();
  switch (ord($flag)){
         case 0:
                     $address="";
                 break;
                 case 1:
                 case 2:
                     fseek($this->fp,$this->getoffset());
                         $address=$this->getstr();
                 break;
                 default:
                     fseek($this->fp,$now_offset);
                     $address=$this->getstr();
                 break;
  }
  return $address;
}
//*
//获取标志1或2
//用来确定地址是否重定向了.
//*
function getflag(){
  return fread($this->fp,1);
}
//*
//用二分查找法在索引区内搜索ip
//*
function searchip($ip){
  $ip=gethostbyname($ip);     //将域名转成ip
  $ip_offset["ip"]=$ip;
  $ip=$this->iptoint($ip);    //将ip转换成长整型
  $firstip=0;                 //搜索的上边界
  $lastip=$this->totalip;     //搜索的下边界
  $ipoffset=$this->lastip;    //初始化为最后一条ip地址的偏移地址
  while ($firstip <= $lastip){
    $i=floor(($firstip + $lastip) / 2);          //计算近似中间记录 floor函数记算给定浮点数小的最大整数,说白了就是四舍五也舍
        fseek($this->fp,$this->firstip + $i * 7);    //定位指针到中间记录
        $startip=strrev(fread($this->fp,4));         //读取当前索引区内的开始ip地址,并将其little-endian的字节序转换成big-endian的字节序
        if ($ip < $startip) {
           $lastip=$i - 1;
        }
        else {
           fseek($this->fp,$this->getoffset());
           $endip=strrev(fread($this->fp,4));
           if ($ip > $endip){
              $firstip=$i + 1;
           }
           else {
              $ip_offset["offset"]=$this->firstip + $i * 7;
              break;
           }
        }
  }
  return $ip_offset;
}
//*
//获取ip地址详细信息
//*
function getaddress($ip){
  $ip_offset=$this->searchip($ip);  //获取ip 在索引区内的绝对编移地址
  $ipoffset=$ip_offset["offset"];
  $address["ip"]=$ip_offset["ip"];
  fseek($this->fp,$ipoffset);      //定位到索引区
  $address["startip"]=long2ip($this->get4b()); //索引区内的开始ip 地址
  $address_offset=$this->getoffset();            //获取索引区内ip在ip记录区内的偏移地址
  fseek($this->fp,$address_offset);            //定位到记录区内
  $address["endip"]=long2ip($this->get4b());   //记录区内的结束ip 地址
  $flag=$this->getflag();                      //读取标志字节
  switch (ord($flag)) {
         case 1:  //地区1地区2都重定向
                 $address_offset=$this->getoffset();   //读取重定向地址
                 fseek($this->fp,$address_offset);     //定位指针到重定向的地址
                 $flag=$this->getflag();               //读取标志字节
                 switch (ord($flag)) {
                        case 2:  //地区1又一次重定向,
                                fseek($this->fp,$this->getoffset());
                                $address["area1"]=$this->getstr();
                                fseek($this->fp,$address_offset+4);      //跳4个字节
                                $address["area2"]=$this->readaddress();  //地区2有可能重定向,有可能没有
                                break;
                                default: //地区1,地区2都没有重定向
                                fseek($this->fp,$address_offset);        //定位指针到重定向的地址
                                $address["area1"]=$this->getstr();
                                $address["area2"]=$this->readaddress();
                                break;
                 }
                 break;
                 case 2: //地区1重定向 地区2没有重定向
                 $address1_offset=$this->getoffset();   //读取重定向地址
                 fseek($this->fp,$address1_offset);  
                 $address["area1"]=$this->getstr();
                 fseek($this->fp,$address_offset+8);
                 $address["area2"]=$this->readaddress();
                 break;
                 default: //地区1地区2都没有重定向
                 fseek($this->fp,$address_offset+4);
                 $address["area1"]=$this->getstr();
                 $address["area2"]=$this->readaddress();
                 break;
  }
  //*过滤一些无用数据
  if (strpos($address["area1"],"CZ88.NET")!=false){
      $address["area1"]="未知";
  }
  if (strpos($address["area2"],"CZ88.NET")!=false){
      $address["area2"]=" ";
  }
  return $address;
 }
 
}
//测试一把
$t = new ipLocation;
$result = $t->getaddress('72.51.27.51');
print_r($result);
echo $result[' area1'];
//*ipLocation class end
?>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
通信相关 1.C#HttpHelper,Httpwebrequest,请求时无视编码,无视证书,无视Cookie,网页抓取 主要是实现了HTTP协议的GET|POST请求时的无视编码,无视证书,设置代理,自动获取Cookie的功能。 访问数据库相关 1.SqlHelper类 使用C#实现对Sql数据库的操作,执行存储过程,Sql语句,返回影响行数,返回DateTable,DataSet,DataReader,以及表集等方法。实现多个数据库的切换功能。功能强大,希望大家喜欢 2.一个操作Sql2005数据库的类(备份,还原,分离,附加,添加删除用户等操作) 这主要是为了让大家练手的,他使用C#代 码的方法实现了对数据的 备份,还原,分离,附加,添加和删除用户等操作 3.DbHelperMySQL类 数据访问抽象基础类 主要是访问Mysql数据库主要实现如下功能 1.得到最大值 2.是否存在 3.是否存在(基于MySqlParameter) 4.执行SQL语句,返回影响的记录数 5.执行MySql和Oracle滴混合事务,执行多条SQL语句,实现数据库事务。 6.执行带一个存储过程参数的的SQL语句。 7.执行带一个存储过程参数的的SQL语句。 8.向数据库里插入图像格式的字段(和上面情况类似的另一种实例) 9.执行一条计算查询结果语句,返回查询结果(object)。 10.执行查询语句,返回MySqlDataReader ( 注意:调用该方法后,一定要对MySqlDataReader进行Close ) 11.执行查询语句,返回DataSet,执行SQL语句,返回影响的记录数,执行多条SQL语句,实现数据库事务。 执行多条SQL语句,实现数据库事务。 12.执行多条SQL语句,实现数据库事务。 13.执行多条SQL语句,实现数据库事务。 14.执行一条计算查询结果语句,返回查询结果(object)。 15.执行查询语句,返回MySqlDataReader ( 注意:调用该方法后,一定要对MySqlDataReader进行Close ) 16.执行查询语句,返回DataSet等等。 复制代码 4.DbHelperOleDb类 1.数据访问基础类(基于OleDb)Access数据库, 2.得到最大值;是否存在;是否存在(基于OleDbParameter); 3.执行SQL语句,返回影响的记录数;执行多条SQL语句,实现数据库事务; 4.执行带一个存储过程参数的的SQL语句; 5.向数据库里插入图像格式的字段(和上面情况类似的另一种实例); 6.执行一条计算查询结果语句,返回查询结果(object); 7.执行查询语句,返回OleDbDataReader; 8.执行查询语句,返回DataSet; 9.执行SQL语句,返回影响的记录数; 10.执行多条SQL语句,实现数据库事务; 11.执行一条计算查询结果语句,返回查询结果(object); 12.执行查询语句,返回OleDbDataReader;执行查询语句,返回DataSet; 复制代码 5.DbHelperOra类 1.数据访问基础类(基于Oracle),主要是用来访问Oracle数据库的。 2.得到最大值;是否存在;是否存在(基于OracleParameter ); 3.执行SQL语句,返回影响的记录数; 4.执行多条SQL语句,实现数据库事务; 5.执行带一个存储过程参数的的SQL语句; 6.向数据库里插入图像格式的字段(和上面情况类似的另一种实例); 7.执行一条计算查询结果语句,返回查询结果(object); 8.执行查询语句,返回OracleDataReader ( 注意:调用该方法后,一定要对SqlDataReader进行Close ); 9.执行查询语句,返回DataSet; 10.执行SQL语句,返回影响的记录数; 11.执行多条SQL语句,实现数据库事务; 12.执行一条计算查询结果语句,返回查询结果(object); 13.执行查询语句,返回OracleDataReader ( 注意:调用该方法后,一定要对SqlDataReader进行Close ); 14.执行查询语句,返回DataSet; 15.执行存储过程 返回SqlDataReader ( 注意:调用该方法后,一定要对SqlDataReader进行Close ); 16.执行存储过程;构建 OracleCommand 对象(用来返回一个结果集,而不是一个整数值); 17.执行存储过程,返回影响的行数; 18.创建 OracleCommand 对象实例(用来返回一个整数值) 复制代码 6.DbHelperSQLite类 [code=csharp] 1.数据访问基础类(基于SQLite),主要是用来访问SQLite数据库的。 2.得到最大值;是否存在;是否存在(基于SQLiteParameter); 3. 执行SQL语句,返回影响的记录数 4.执行多条SQL语句,实现数据库事务。 5.执行带一个存储过程参数的的SQL语句。 6.向数据库里插入图像格式的字段(和上面情况类似的另一种实例) 7.执行一条计算查询结果语句,返回查询结果(object)。 8.执行查询语句,返回SQLiteDataReader 9.执行查询语句,返回DataSet 10.执行SQL语句,返回影响的记录数 11. 执行多条SQL语句,实现数据库事务。 12. 执行一条计算查询结果语句,返回查询结果(object)。 13.执行查询语句,返回SQLiteDataReader 14.执行查询语句还参数,返回DataSet[/code] 7.DbHelperSQLP类 8.DbHelperSQL类 9.OracleHelper类 帮助类 1.最新的Functions 类 这里面实现了很多的帮助方法,比如正则验证,加密,解密,MD5加密,字符串的处理等操作。 2.最新的 PageValidate 类 主要是实现了验证,是否为空,是否为数字等。 3.JavascriptHelp 帮助输出简单的JS代码 4.最新的皮肤帮助类 UI_Misc_Helper JavaScript|Jquery相关 1.jQuery.cookie帮助类 访问系统相关 1.C#计算机信息类ComputerInfo 实现了计算机的信息获取功能,计算机名,IP,硬盘信息,网卡信息,操作系统信息等 2.Api_Win32_Mac类工具包 一个Win32的Api包,实现了大部分的Api操作帮助方法 3.在c#程序中放音乐的帮助类 使用C#播放音乐的帮助类,只需要调用方法就可以放音乐了 GDI+相关,图像相关 1.生成缩略图的类文件SmallImage 一个把图片生成缩略图的类,可以设置大小,非常好用,希望大家喜欢哦。 C#基础类库 1.Chart图形 Assistant创建显示图像的标签和文件 OWCChart统计图的封装类 2.Cookie&Session&Cache缓存帮助类 CacheHelper C#操作缓存的帮助类,实现了怎么设置缓存,怎么取缓存,怎么清理缓存等方法,只需要调用方法就可以实现 CookieHelper C#操作Cookie的帮助类,添加Cookie,删除Cookie,修改Cookie,清理Cookie SessionHelper C#关于Session的操作,获取Session,设置Session,删除Session使用方便,只需要调用方法就可以了 SessionHelper2 C#关于Session的一些高级操作,比如取Session对象,取Session数据等等 3.CSV文件转换 CsvHelper CSV文件导入DataTable和DataTable导出到Csv文件等操作 4.DEncrypt 加密/解密帮助类 DEncrypt C#DEncrypt加密/DEncrypt解密帮助类 ,多种方式,可以设置Key DESEncrypt C#DESEncrypt加密/DESEncrypt解密帮助类 ,多种方式,可以设置Key Encrypt C#Encrypt--Encrypt加密/Encrypt解密/附加有MD5加密,个人感觉很不错的一个加密类 HashEncode 哈希加密帮助类,得到随机哈希加密字符串,随机哈希数字加密等 MySecurity MySecurity--Security安全加密/Security Base64/Security文件加密,以及一些常用的操作方法 RSACryption RSACryption--RSA加密/RSA解密字符串 RSA加密应用最多是银行接口,这里的方法可以直接使用哦 5.FTP操作类 FTPClient   FTPClient--FTP操作帮助类,FTP上传,FTP下载,FTP文件操作,FTP目录操作 FTPHelper FTPHelper-FTP帮助类,FTP常用操作方法,添加文件,删除文件等 FTPOperater FTP操作帮助类,方法比较多,比较实用 6.JS操作类 JsHelper JsHelper--Javascript操作帮助类,输出各种JS方法,方便不懂JS的人使用,减少代码量 7.JSON 转化类 ConvertJson List转成Json|对象转成Json|集合转成Json|DataSet转成Json|DataTable转成Json|DataReader转成Json等 8.Mime MediaTypes 电子邮件类型帮助类,规定是以Xml,HTML还是文本方式发送邮件 MimeEntity Mime实体帮助类 MimeHeaders mime的Header帮助类 MimeReader mime读取帮助类 QuotedPrintableEncoding mimeEncoding帮助类 9.PDF 转化类 PDFOperation PDFOperation--C#PDF文件操作帮助类 类主要功能有1.构造函数2.私有字段3.设置字体4.设置页面大小 5.实例化文档6.打开文档对象7.关闭打开的文档8.添加段落9.添加图片10.添加链接、点 等功能 10.ResourceManager 操作类 AppMessage app消息格式化类,返加字符串帮助类 ResourceManager C#一个操作Resource的帮助类 ResourceManagerWrapper Resources 操作Resources的帮助类,使用Api的方式 Sample.xml 11.XML操作类 XmlHelper 操作Xml文档的帮助类,主要是添加,删除,修改,查询节点的操作和操作后进行保存的功能。 XMLProcess 操作Xml文档的帮助类,主要是添加,删除,修改,查询节点的操作的功能。 12.弹出消息类 MessageBox JS弹出信息帮助类 ShowMessageBox 相对于MessageBox更丰富的提示类 13.导出Excel 操作类 DataToExcel 从“Excel导出数据的帮助类 ExcelHelper 导出到文件,导出一部分集合,从DataTable中操作等 ExportExcel 主要功能如下1.将整个网页导出来Excel 2.将GridView数据导出Excel GridViewExport 主要功能:将整GridView的数据导出到Excel中关增加一个效果线做美化 14.分词辅助类 SegList C#SegList分词辅助类,帮助类 15.汉字转拼音 EcanConvertToCh C#将汉字转成拼音 PinYin 取汉字拼音的首字母,只要你输入一个汉字,或者是多个汉字就会取出相应的道字母,主要是方便查询使用的 复制代码 16.配置文件操作类 ConfigHelper 1.根据Key取Value值 2.根据Key修改Value 3.添加新的Key ,Value键值对 4.根据Key删除项 复制代码 17.日历 CNDate 1.传回公历y年m月的总天数 2.根据日期值获得周一的日期 3.获取农历 复制代码 18.上传下载 DownLoadHelper 输出硬盘文件,提供下载 支持大文件、续传、速度限制、资源占用小 复制代码 FileDown 1.参数为虚拟路径 2.获取物理地址 3.普通下载 4.分块下载 5.输出硬盘文件,提供下载 支持大文件、续传、速度限制、资源占用小 复制代码 FileUp 1.把上传的文件转换为字节数组 2.流转化为字节数组 2.上传文件根据FileUpload控件上传 3.把Byte流上传到指定目录并保存为文件 复制代码 UpLoadFiles 页面专用类 19.时间操作类 DateFormat 返回每月的第一天和最后一天 复制代码 TimeHelper 1.将时间格式化成 年月日 的形式,如果时间为null,返回当前系统时间 2.将时间格式化成 时分秒 的形式,如果时间为null,返回当前系统时间 3.把秒转换成分钟 4.返回某年某月最后一天 5.返回时间差 6.获得两个日期的间隔 7.格式化日期时间 8.得到随机日期 复制代码 20.视频转换类 VideoConvert 1.获取文件的名字 2.获取文件扩展名 3.获取文件类型 4.视频格式转为Flv 5.生成Flv视频的缩略图 6.转换文件并保存在指定文件夹下 7.转换文件并保存在指定文件夹下 8.运行mencoder的视频解码器转换 复制代码 21.随机数类 BaseRandom 1.产生随机字符 2.产生随机数 3.在一定范围内产生随机数 复制代码 RandomHelper 1.生成一个指定范围的随机整数,该随机数范围包括最小值,但不包括最大值 2.生成一个0.0到1.0的随机小数 3.对一个数组进行随机排序 4. 一:随机生成不重复数字字符串 5.方法二:随机生成字符串(数字和字母混和) 6.从字符串里随机得到,规定个数的字符串. 复制代码 22.条形码 BarCodeToHTML 本类是个条码生成类,大家可根据需要自己设置,非常好用 23.图片 ImageClass 主要功能有:缩略图片,图片水印,文字水印,调整光暗,反色处理,浮雕处理,拉伸处理,左右翻转,上下翻转, 压缩图片,图片灰度化,转换为黑白图片,获取图片中的各帧 ImageDown 主要功能,把图片下载到本地 ImageUpload 图片上传并进行缩略图处理 24.网络 NetHelper 25.文件操作类 DirFileHelper FileOperateHelper INIFile 26.序列化 Serialize 序列化帮助类,还有例子 SerializeHelper 序列化帮助类,Xml序列化,Json序列化,SoapFormatter序列化,BinaryFormatter序列化 27.压缩解压缩 SharpZip 28.验证码 YZMHelper Captcha 验证码类,一个很个性的验证码类 29.页面辅助类 HTMLHelper UploadEventArgs JavaScriptPlus PageHelper 30.邮件 MailHelper MailPoper MailSender SmtpServerHelper 31.邮件2 ConnectCommand ConnectResponse DeleCommand ListCommand ListResponse MailHeaders MailMessageEx NoopCommand PassCommand Pop3Client Pop3Command Pop3Commands Pop3Exception Pop3ListItem Pop3Response Pop3Responses Pop3State QuitCommand RetrCommand RetrResponse RsetCommand Stat StatCommand StatResponse TopCommand UserCommand 32.正则表达式 RegexHelper 33.字符串 StringHelper 34.其它 BasePage BindDataControl ConvertHelper DataCache FormulaExpress GridViewHelper IpHelper MediaHandler PageValidate PicDeal QueryString Rmb StringPlus SysHelper Tools UrlOper Utility ValidateImg WebSitePathHelper
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值