不太清楚你的意思 拆成两个循环就可以实现呀 for (int i = 1; i <= 254; i++) { Console.WriteLine("192.168.0." + i.ToString()); } for (int i = 1; i <= 100; i++) { Console.WriteLine("192.168.1." + i.ToString()); }
for (int i = 0; i < 254; i++) { Console.WriteLine("192.168.0." + i.ToString()); Console.WriteLine("192.168.1." + i.ToString()); } //或者 for (int i = 0; i < 2; i++) { for (int j = 0; j < 254; j++) { Console.WriteLine("192.168." + i.ToString() + "." + j.ToString()); } }
你自己说只要0段个1段的啊.. 要100段? for (int i = 0; i < 100; i++) { ThreadPool.QueueUserWorkItem(new WaitCallback(addIP),i); }public void addIP(Object state) { int i = Convert.ToInt32(state); for (int j = 0; j < 255; j++) { Console.WriteLine("192.168."+j.ToString()+"." + i.ToString()); Console.WriteLine("192.168." + j.ToString() + "." + i.ToString()); } } 没试过,也不想试. 输出顺序我不保证,但是运行结束 应该能把100段的全弄出来
public void addIP(Object state) { int i = Convert.ToInt32(state); for (int j = 0; j < 255; j++) { Console.WriteLine("192.168."+j.ToString()+"." + i.ToString()); } } - -戳,多写了一句,,,,看样子真困了...
(int i = 0; i < 254; i++) { Console.WriteLine("192.168.0." + i.ToString()); Console.WriteLine("192.168.1." + i.ToString()); } for (int i = 0; i < 2; i++) { for (int j = 0; j < 254; j++) { Console.WriteLine("192.168." + i.ToString() + "." + j.ToString()); } }
public List<string> IP_Adress(string begin, string end) { //下面的z.c.x.y分别对应192.168.1.1 List<string> list = new List<string>(); //获取开始和结束(z.c.x.y的x) int _temp_begin_one = Convert.ToInt32(begin.Substring(8, 1)); int _temp_end_one = Convert.ToInt32(end.Substring(8, 1)); //获取开始和结束(z.c.x.y的y) int _temp_begin_two = Convert.ToInt32(begin.Substring(10)); int _temp_end_two = Convert.ToInt32(end.Substring(10)); //获取开头部分z.c.x.y的z和c int _temp_z = Convert.ToInt32(end.Substring(0,3)); int _temp_c = Convert.ToInt32(end.Substring(4,3)); //从x开始循环 for (int i = _temp_begin_one; i <= _temp_end_one; i++) {
public List<string> IP_Adress(string begin, string end) { //下面的z.c.x.y分别对应192.168.1.1 List<string> list = new List<string>(); string reg = @"(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})"; Match m = Regex.Match(begin, reg); //获取开头部分z.c.x.y的z和c int _temp_z = int.Parse(Regex.Match(begin, reg).Groups[1].Value); int _temp_c = int.Parse(Regex.Match(begin, reg).Groups[2].Value); //获取开始和结束(z.c.x.y的x) int _temp_begin_one = int.Parse(Regex.Match(begin, reg).Groups[3].Value); int _temp_end_one = int.Parse(Regex.Match(end, reg).Groups[3].Value); //获取开始和结束(z.c.x.y的y) int _temp_begin_two = int.Parse(Regex.Match(begin, reg).Groups[4].Value); int _temp_end_two = int.Parse(Regex.Match(end, reg).Groups[4].Value); //从x开始循环 for (int i = _temp_begin_one; i <= _temp_end_one; i++) {
看楼上的都太复杂了,我有个简单的方法,代码贴下 int num = 0; for (int i = 0; i < 2; i++) { if (i == 0) { num = 255; } else { num = 100; } for (int j = 1; j <= num; j++) { listBox1.Items.Add("192.168." + i + "." + j); messagebox.show("192.168." + i + "." + j); } }
拆成两个循环就可以实现呀
for (int i = 1; i <= 254; i++)
{
Console.WriteLine("192.168.0." + i.ToString());
} for (int i = 1; i <= 100; i++)
{
Console.WriteLine("192.168.1." + i.ToString());
}
{
Console.WriteLine("192.168.0." + i.ToString());
Console.WriteLine("192.168.1." + i.ToString());
}
//或者
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 254; j++)
{
Console.WriteLine("192.168." + i.ToString() + "." + j.ToString());
}
}
要100段?
for (int i = 0; i < 100; i++)
{
ThreadPool.QueueUserWorkItem(new WaitCallback(addIP),i);
}public void addIP(Object state)
{
int i = Convert.ToInt32(state);
for (int j = 0; j < 255; j++)
{
Console.WriteLine("192.168."+j.ToString()+"." + i.ToString());
Console.WriteLine("192.168." + j.ToString() + "." + i.ToString());
}
}
没试过,也不想试.
输出顺序我不保证,但是运行结束 应该能把100段的全弄出来
{
int i = Convert.ToInt32(state);
for (int j = 0; j < 255; j++)
{
Console.WriteLine("192.168."+j.ToString()+"." + i.ToString());
}
}
- -戳,多写了一句,,,,看样子真困了...
{
Console.WriteLine("192.168.0." + i.ToString());
Console.WriteLine("192.168.1." + i.ToString());
} for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 254; j++)
{
Console.WriteLine("192.168." + i.ToString() + "." + j.ToString());
}
}
string ip1 = "192.168.0.10";
string ip2 = "192.168.1.20";
//ip的倒数第二位和最后一位
int ip1_last2 = int.Parse(ip1.Split('.')[2]), ip1_last = int.Parse(ip1.Split('.')[3]);
int ip2_last2 = int.Parse(ip2.Split('.')[2]), ip2_last = int.Parse(ip2.Split('.')[3]);
while (ip1_last2 < ip2_last2 || (ip1_last2 == ip2_last2 && ip1_last <= ip2_last))
{
Console.WriteLine(string.Format("192.168.{0}.{1}", ip1_last2, ip1_last));
ip1_last++;
if (ip1_last == 255)
{
ip1_last = 1;
ip1_last2++;
}
}
for (int i = 0; i < 254; i++) { Console.WriteLine("192.168.0." + i.ToString()); Console.WriteLine("192.168.1." + i.ToString()); } //或者 for (int i = 0; i < 2; i++) { for (int j = 0; j < 254; j++) { Console.WriteLine("192.168." + i.ToString() + "." + j.ToString()); } }
string str2 = "192.168.22.100";
string reg = @"192\.168\.(\d{1,3})\.(\d{1,3})";
Match m = Regex.Match(str1, reg);
int istart = int.Parse(Regex.Match(str1, reg).Groups[1].Value);
int istop = int.Parse(Regex.Match(str2, reg).Groups[1].Value);
int jstart = int.Parse(Regex.Match(str1, reg).Groups[2].Value);
int jstop = int.Parse(Regex.Match(str2, reg).Groups[2].Value);
for (int i = istart; i <= istop; i++)
{
if (istart == istop)
{
Console.WriteLine("192.168." + istart + "." + jstart + "-192.168." + istop + "." + jstop);
} if (i == istart && i < istop)
{
Console.WriteLine("192.168." + i + "." + jstart + "-192.168." + i + ".254");
}
if (i > istart && i < istop)
{
Console.WriteLine("192.168." + i + ".1-192.168." + i + ".254");
}
if (i > istart && i == istop)
{
Console.WriteLine("192.168." + i + ".1-192.168." + i+"."+jstop);
}
}
Console.ReadKey();亲测可用,支持192.168.0.1-192.168.254.254之间的任意IP
for (int i = 0; i <= 1; i++)
{
for (int j = 1; j <= 255; j++)
{
if (i == 0)
{
Console.WriteLine("192.168.0." + j.ToString());
}
else if (i == 1)
{
Console.WriteLine("192.168.1." + j.ToString());
if (j == 100)
{
break;
}
}
}
}
//可能比较啰嗦,但是思路挺清晰
现在知道LZ想表达什么了..
就是遍历出2个合法IP之间的所有IP
如:开始ip:192.168.0.0 结束IP:192.168.1.100
那么就要输出 开始IP段的所有IP 和结束IP段的前100条IP
从192.168.0.0到192.168.1.100结束重新贴下代码,我用的是winform,其实差不多.
string IP_S = "";
string IP_E = "";
private void button1_Click(object sender, EventArgs e)
{
//开始IP
IP_S = textBox2.Text;
//结束IP
IP_E = textBox3.Text;
//拆分
string[] IP_SList = IP_S.Split('.');
string[] IP_EList = IP_E.Split('.'); //不满足循环
if ((IP_S == IP_E) || (int.Parse(IP_EList[2]) < int.Parse(IP_SList[2])))
{
return;
}
else
{
//开始循环输出
getIP(IP_SList, IP_EList);
}
}
/// <summary>
/// 循环输出
/// </summary>
/// <param name="IP_SList">开始IP拆分后的集合</param>
/// <param name="IP_EList">结束IP拆分后的集合</param>
private void getIP(string[] IP_SList,string[] IP_EList)
{
//如果2个IP段相同
if (int.Parse(IP_EList[2]) == int.Parse(IP_SList[2]))
{
//循环IP差
for (int i = int.Parse(IP_SList[3]); i < int.Parse(IP_EList[3])+1; i++)
{
//输出IP
textBox1.Text += IP_SList[0] + "." + IP_SList[1] + "." + IP_SList[2] + "." + i.ToString()+"\r\n";
}
}
else
{
//循环255次
for (int i = int.Parse(IP_SList[3]); i < 256; i++)
{
//输出IP
textBox1.Text += IP_SList[0] + "." + IP_SList[1] + "." + IP_SList[2] + "." + i.ToString() + "\r\n";
}
//开始IP段+1
IP_SList[2] = (int.Parse(IP_SList[2]) + 1).ToString();
//开始IP归0
IP_SList[3] = "0";
//递归循环输出
getIP(IP_SList, IP_EList);
}
}
{
//下面的z.c.x.y分别对应192.168.1.1
List<string> list = new List<string>();
//获取开始和结束(z.c.x.y的x)
int _temp_begin_one = Convert.ToInt32(begin.Substring(8, 1));
int _temp_end_one = Convert.ToInt32(end.Substring(8, 1));
//获取开始和结束(z.c.x.y的y)
int _temp_begin_two = Convert.ToInt32(begin.Substring(10));
int _temp_end_two = Convert.ToInt32(end.Substring(10));
//获取开头部分z.c.x.y的z和c
int _temp_z = Convert.ToInt32(end.Substring(0,3));
int _temp_c = Convert.ToInt32(end.Substring(4,3));
//从x开始循环
for (int i = _temp_begin_one; i <= _temp_end_one; i++)
{
int _for_begin;//y的开始;
int _for_end; //y的结束 //如果x的开始和结束是否相等
if (_temp_begin_one != _temp_end_one )
{
_for_begin = _temp_begin_two;
_for_end = 254;
_temp_begin_one++;
}
else
{
_for_begin = _temp_begin_two;
_for_end = _temp_end_two;
}
for (int j = _for_begin; j <= _for_end; j++)
{
list.Add(_temp_z + "." + _temp_c + "." + i + "." + j);
}
} return list;
}看成254进制的数就好了..调用时直接输入IP就行了..如string begin="192.168.0.1" string end="192.168.1.12"
{
//下面的z.c.x.y分别对应192.168.1.1
List<string> list = new List<string>();
string reg = @"(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})";
Match m = Regex.Match(begin, reg);
//获取开头部分z.c.x.y的z和c
int _temp_z = int.Parse(Regex.Match(begin, reg).Groups[1].Value);
int _temp_c = int.Parse(Regex.Match(begin, reg).Groups[2].Value);
//获取开始和结束(z.c.x.y的x)
int _temp_begin_one = int.Parse(Regex.Match(begin, reg).Groups[3].Value);
int _temp_end_one = int.Parse(Regex.Match(end, reg).Groups[3].Value);
//获取开始和结束(z.c.x.y的y)
int _temp_begin_two = int.Parse(Regex.Match(begin, reg).Groups[4].Value);
int _temp_end_two = int.Parse(Regex.Match(end, reg).Groups[4].Value);
//从x开始循环
for (int i = _temp_begin_one; i <= _temp_end_one; i++)
{
int _for_begin;//y的开始;
int _for_end; //y的结束 //如果x的开始和结束是否相等
if (_temp_begin_one != _temp_end_one )
{
_for_begin = _temp_begin_two;
_for_end = 254;
_temp_begin_one++;
}
else
{
_for_begin = _temp_begin_two;
_for_end = _temp_end_two;
}
for (int j = _for_begin; j <= _for_end; j++)
{
list.Add(_temp_z + "." + _temp_c + "." + i + "." + j);
}
} return list;
}一开始没详细看你的要求..这个改过了..偷了下21楼的正则表达式..1.1.1.1到999.999.999.999都行
开始和结束的开头2位(如192,168)要一样..如果不一样就按结束的开头做内容了
int num = 0;
for (int i = 0; i < 2; i++)
{
if (i == 0)
{
num = 255;
}
else
{
num = 100;
}
for (int j = 1; j <= num; j++)
{
listBox1.Items.Add("192.168." + i + "." + j);
messagebox.show("192.168." + i + "." + j);
}
}