IP地址输出的问题

zdz8712 2010-04-01 11:57:02
给定IP地址范围,比如 192.168.1.10--192.168.2.30,怎么把范围内可用IP以string[]数组的形式返回呢?已经有得到可用IP地址个数的方法。
...全文
193 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zdz8712 2010-04-09
  • 打赏
  • 举报
回复
原来想让用户选择可用IP地址,后来觉得可用IP列表太多了,索性就让用户自己填了,然后验证一下格式和是否在可用范围内~~~结贴。
缭绕飘渺 2010-04-02
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zdz8712 的回复:]
引用 4 楼 mervyn807 的回复:
可用就是没有被占用的吗
循环ping的话应该就可以了吧
然后不通的就是可用的,添加的数组

这位仁兄可能误解我的意思了,这跟通信没关系。是一个管理系统。这个功能是 能查出数据库中的IP地址范围,可能是多个,然后给每个范围内的IP地址循环输出 返回一个string[],小弟我循环了一上午出来的结果总是最后一个,而不是范围内的每个IP。希望达人们给……
[/Quote]
只得最后一个,证明是你给字符串复制的语句是错误的,你每次循环后都覆盖了上次的值,所以只有最后一个
你要给数组赋值才行的
hastyrose 2010-04-01
  • 打赏
  • 举报
回复
我的想法比较笨,先根据.将两个IP分开成两个string数组,然后循环比较
Peter200694013 2010-04-01
  • 打赏
  • 举报
回复
类似”得到可用IP地址个数的方法“中,在判断是否是可用IP地址,“是”则将其加到一个String数组中,然后返回
wuyi8808 2010-04-01
  • 打赏
  • 举报
回复
using System;
using System.Collections.Generic;

class Program
{
static void Main()
{
string[] ips = GetIpRange("192.168.255.248", "192.169.0.19");
foreach (string s in ips)
{
Console.WriteLine(s);
}
}

// 这个就是你想要的!
static string[] GetIpRange(string s0, string s1)
{
IP ip0 = new IP(s0);
IP ip1 = new IP(s1);
List<string> a = new List<string>();
for (uint i = ip0.Value; i <= ip1.Value; i++)
{
a.Add(new IP(i).ToString());
}
return a.ToArray();
}
}

class IP
{
uint x;

public uint Value { get { return x; } }

public IP(uint i) { x = i; }

public IP(string s)
{
string[] r = s.Split('.');
x = uint.Parse(r[3]) + (uint.Parse(r[2])<<8) + (uint.Parse(r[1])<<16) + (uint.Parse(r[0])<<24);
}

public override string ToString()
{
return string.Format("{0}.{1}.{2}.{3}", x>>24, x<<8>>24, x<<16>>24, x<<24>>24);
}
}
wonsoft 2010-04-01
  • 打赏
  • 举报
回复
兄弟的题出得有点bug,如果你的子网掩码都没有,怎么能确定有多少可用的IP呢?其实很简单,你就用一个循环把它们列举出来,然后再冷判断它可用不,可用就存入到列表中。
xiangyi009 2010-04-01
  • 打赏
  • 举报
回复
我觉得不用String数组来存,因为用数组定义了之后它的长度就定了,然后给他添加的数据是重新开避内存来重新存储的一个新的数组了,有点浪费资源的,用Arraylist存了之后可以.add()来添加……
zdz8712 2010-04-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 mervyn807 的回复:]
可用就是没有被占用的吗
循环ping的话应该就可以了吧
然后不通的就是可用的,添加的数组
[/Quote]
这位仁兄可能误解我的意思了,这跟通信没关系。是一个管理系统。这个功能是 能查出数据库中的IP地址范围,可能是多个,然后给每个范围内的IP地址循环输出 返回一个string[],小弟我循环了一上午出来的结果总是最后一个,而不是范围内的每个IP。希望达人们给出良策,在此不胜感激额~
缭绕飘渺 2010-04-01
  • 打赏
  • 举报
回复
可用就是没有被占用的吗
循环ping的话应该就可以了吧
然后不通的就是可用的,添加的数组
netchildren 2010-04-01
  • 打赏
  • 举报
回复
有看没有懂,帮顶

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧