|
首页
|
下载中心
|
高手学院
|
视频教程
|
书籍教程
|
模板中心
|
空间评测
|
每日代理
|
站长服务
|
高手论坛
|
导出QQWry.Dat中IP地址到文件[C#]
作者:佚名 文章来源:不详 点击数: 更新时间:2005-1-30
灵感之源语:“如果写个格式转换代码就更好了^_^”
既然如此,那……
下载CS文件:
http://www.cnblogs.com/Files/rexsp/IPExport.rar
/**//******************************************************************
** File Name:IPExport.cs
** Copyright (c) 2004-2005 PPTech Studio(PPTech.Net)
** Creater:Rexsp(MSN:yubo@x263.net)
** Create Date:2004-12-29 20:10:28
** Modifier:
** Modify Date:
** Description:to export the ip location from qqwry.dat
** Version: IPExport 1.0.0
******************************************************************/
using System;
using System.Collections;
using System.Data;
using System.IO;
namespace PPTech.ESP.Component
{
/**//// <summary>
/// ExportData 的摘要说明。
/// </summary>
public class IPExport
{
私有成员#region 私有成员
private string country;
private string local;
private FileStream objfs = null;
private long startIp=0;
private long endIp=0;
private int countryFlag=0;
private long endIpOff=0;
#endregion
构造函数#region 构造函数
public IPExport()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
#endregion
导出数据#region 导出数据
public void SaveToText(string toFilePath,string fromFilePath)
{
objfs = new FileStream(fromFilePath, FileMode.Open, FileAccess.Read);
objfs.Position=0;
byte[] buff1 = new Byte[8] ;
objfs.Read(buff1,0,8);
int firstStartIp=buff1[0]+buff1[1]*256+buff1[2]*256*256+buff1[3]*256*256*256;
int lastStartIp=buff1[4]*1+buff1[5]*256+buff1[6]*256*256+buff1[7]*256*256*256;
long recordCount=Convert.ToInt64((lastStartIp-firstStartIp)/7.0);
if(recordCount<=1)
{
country="FileDataError";
objfs.Close();
}
long rangE=recordCount;
StreamWriter writer=File.AppendText(toFilePath);
for(int i=0;i<=recordCount;i++)
{
long offSet = firstStartIp+i*7;
objfs.Position=offSet;
byte [] buff = new Byte[7];
objfs.Read(buff,0,7);
endIpOff=Convert.ToInt64(buff[4].ToString())+Convert.ToInt64(buff[5].ToString())*256+Convert.ToInt64(buff[6].ToString())*256*256;
startIp=Convert.ToInt64(buff[0].ToString())+Convert.ToInt64(buff[1].ToString())*256+Convert.ToInt64(buff[2].ToString())*256*256+Convert.ToInt64(buff[3].ToString())*256*256*256;
objfs.Position=endIpOff;
byte [] buff3 = new Byte[5];
objfs.Read(buff3,0,5);
this.endIp=Convert.ToInt64(buff3[0].ToString())+Convert.ToInt64(buff3[1].ToString())*256+Convert.ToInt64(buff3[2].ToString())*256*256+Convert.ToInt64(buff3[3].ToString())*256*256*256;
this.countryFlag=buff3[4];
string showIP=this.IntToIP(startIp);
this.GetCountry();
writer.WriteLine(showIP+" "+this.country+this.local);
}
writer.Close();
}
#endregion
int转换成IP#region int转换成IP
private string IntToIP(long ip_Int)
{
long seg1=(ip_Int&0xff000000)>>24;
if(seg1<0)
seg1+=0x100;
long seg2=(ip_Int&0x00ff0000)>>16;
if(seg2<0)
seg2+=0x100;
long seg3=(ip_Int&0x0000ff00)>>8;
if(seg3<0)
seg3+=0x100;
long seg4=(ip_Int&0x000000ff);
if(seg4<0)
seg4+=0x100;
string ip=seg1.ToString()+"."+seg2.ToString()+"."+seg3.ToString()+"."+seg4.ToString();
return ip;
}
#endregion
获取国家/区域偏移量#region 获取国家/区域偏移量
private string GetCountry()
{
switch(this.countryFlag)
{
case 1:
case 2:
this.country=GetFlagStr(this.endIpOff+4);
this.local=( 1 == this.countryFlag )?" ":this.GetFlagStr(this.endIpOff+8);
break;
default:
this.country=this.GetFlagStr(this.endIpOff+4);
this.local=this.GetFlagStr(objfs.Position);
break;
}
return " ";
}
#endregion
获取国家/区域字符串#region 获取国家/区域字符串
private string GetFlagStr(long offSet)
{
int flag=0;
byte [] buff = new Byte[3];
while(1==1)
<IMG id=Codehighlighter1_3491_3912_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_3491_3912_Closed_Text.style.display='none'; Codehighlighter1_3491_3912_Open_Image.style.display='inline'; Codehighli
网友评论:
(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
去网站高手技术论坛讨论...
文章录入:
admin
责任编辑:admin 【
发表评论
】【
告诉好友
】【
打印此文
】【
关闭窗口
】
上一篇文章:
【算法】C#快速排序类
下一篇文章: 没有了
|
设为首页
|
加入收藏
|
联系我们
|
合作伙伴
|
友情链接
|
广告投放
|
关于我们 |
版权所有 Copyright © 2003-2005
网站高手技术问题请到论坛提出! 我们会及时回复!
业务联系QQ:346519747 HP: 13960838567(只谈业务)
为中国网站提供动力!
感谢
第五空间提供空间服务
> 沪ICP备05028283号