C#中实现IP地址的排序
来源:互联网 发布:matlab r2017a mac 编辑:程序博客网 时间:2024/05/20 18:20
这一切的开始要从同事手中的一个医疗项目开始。
早上一到公司,就看到同事跟数据库连接干上了。要处理的问题是判断网络是否连通。因为如果你不去判断的话,系统只会提示说"sa"登录失败,却不告诉你是因为网络的原因,这会让人相当的郁闷。
我们的客户可不喜欢看到这样"不明不白"的错误,于是我们要做的就是帮他"翻译"过来,让他们知道是因为你们的网络不通,先找网管来检查网络,等到不再提示网络问题的时候再给我们打电话。
要知道跑来跑去是很浪费时间的。
到这里我就想到Scan,它其中一个重要的功能就是扫描网络中在线的IP地址(当然这是需要些其他条件的,这里不是我要说的),于是就想到肯定能用C#来实现这个功能。
于是就开始Google了,后来我就找到了下面的东西:
在这里我用到了线程,如果直接处理的话,时间上有点不能接受。
首先我们找到局域网中在线的IP(这里只处理了一个网段的,如果有时间的朋友也可以研究下怎么处理多网段的)
下面就以192.168.0.0至192.168.0.255为例:
这里很简单就只是一个循环,唯一看起来不一样的就是线程了。
这里把循环的iNum值传到线程里面去做为IP的最后一段组成:192.168.0.1的格式然后下面再用组合的IP判断网络是否连通。
已经很久没碰线程这块儿了,还是回头看的以前在北大青鸟做的摇奖机项目,最终解决线程后一是高兴,高兴解决了问题,二是感觉我还在吃老本。
我知道是我进步得太慢了,我在努力。
又回到代码,不要忘了还需要导入线程的命名空间:
下面是循环调用的扫描方法ScanIP方法
判断IP是否在线的那段代码我也是直接复制下来用的,都没有改过,囧。。。。。
能实现这样的功能有很多种方法,起码我就找到了两种,觉得这几段看起来更想我想象中的。
大概意思就是执行Cmd命令:ping -n 1 192.168.0.1,然后在返回的结果里面找是不是有"timeout”字样或者你也可以直接在Cmd里面执行:ping -n -1 255.265.65.89看看会返回什么,当然前提是你局域网里面没有这个网段的(要是你有我就,,,我就,,,当我没说-_-!)。
如果没有返回TimedOut那么就表示它在线那么就加入ListView。(在系统中执行Ping你或许看到的是中文,代码应该不是中文,之所以这样判断是因为我并没有得到0到255的所有IP)
如果有那么就表示请求超时了,当然这里也存在一个问题:比如说网络差而造成大量的丢包,或则说硬件错误的时候它不会提示你"timeout",这里点到为止继续说下面的代码。
if里面的那个方法是一个委托,下面是代码:
这几句代码我能用,但现在的我还不能具体的解释出来,我的理解就是在线程里面如果要调用控件的话就需要这样用。
囧囧更健康。
下面开始点题了
通过上面的代码我们就把在线的IP给找出来了,但是它的顺序却不是我想要的。于是我也跟它干上了。最后找到下面段看不大明白的代码:
主要就是<<没看懂,不知道是什么意思,知道的朋友可以说下,先谢了。
这只是个通用方法,要让IP地址排序是这样调用的:
先声明了一个IPS数组长度为ListView1的长度,然后循环ListView1取出来放到数组里面在将这个数组放到ConvertToUInt里面去排序,调用排序的就是中间句Array.Sort那句调用上面的ConvertToUInt方法来实现排序。
最后完了先把ListView1的Item项清空,然后再把刚才排序后的IPS数组给加到ListView1里面就成功了。
差不多了,基本上就是这样了。
在这里留个标记下次的时候就不用去翻以前的项目了,这篇Blog后我对线程又加深印象了。
对于那些现在不懂的,以后再来回顾它。
- C#中实现IP地址的排序
- C#中ip地址的获取
- C#中IP地址的获得
- C#中ip地址的获取 .
- C#实现IP地址控件
- C#实现的IP地址输入框类 kewords: IP地址框 C# .Net
- 通过淘宝的ip地址库获取ip地址通用类的实现(C#版)
- C#实现局域网IP的扫描,从而打印出IP地址,主机名称和MAC地址
- IP地址列的排序
- ip地址的快速排序
- linux的ip地址排序
- C#中如何得到机器的IP地址
- C#中如何得到机器的IP地址
- C#中如何得到机器的IP地址
- C#中获取本机IP地址的方法
- C#中IP地址与数字之间的互转
- 使用sort命令实现IP地址排序
- java 实现ip地址分类并排序
- Windows批处理 实现数组方法
- oracle多实例的启动与关闭
- undefined reference to 链接错误
- ORA-01843: not a valid month我自己的解决方案
- MeeGo handset 1.1开发环境[1]:安装MeeGo1.1
- C#中实现IP地址的排序
- Command模式,Functor与对之应用的一些想法
- PHP的iconv
- 解决在线用户列表和重复登录
- 修改proxool配置文件中密码为密文
- 逐浪不是“网络交换机”,而是“网站芯片”--写在逐浪CMS新LOGO诞生
- Libvirt简介
- 数据库需要注意的东西 --不断收藏
- dfdsfsadf