class PingExam
{
public static void Main()
{
Ping ping = new Ping();
string ip = "192.168.1.43"; // 目标ip
int[] ports = { , , , , , }; // 需要扫描的端口
scanPort(IPAddress.Parse(ip), ports);
} private static void scanPort(IPAddress address, int startPort, int endPort)
{
int[] ports = new int[endPort - startPort + ];
for (int i = ; i < endPort-startPort+; i++) {
ports[i] = startPort + i;
}
scanPort(address, ports);
} private static void scanPort(IPAddress address, int[] ports)
{
try {
int count = ports.Length;
AutoResetEvent[] arEvents = new AutoResetEvent[count]; // 同步对象
for (int i = ; i < count; i++) {
arEvents[i] = new AutoResetEvent(false); // 同步对象, 初始未触发
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Bind(new IPEndPoint(IPAddress.Any, ));
socket.BeginConnect(new IPEndPoint(address, ports[i]),
callback,
new ArrayList() { socket, ports[i], arEvents[i]} // 传递3个参数: 当前socket, 端口, 同步对象
);
} WaitHandle.WaitAll(arEvents); // 等待所有扫描工作完成
}
catch (Exception ex) {
Console.WriteLine(ex.Message);
}
} private static void callback(IAsyncResult ar) // 扫描完成后的回调方法
{
ArrayList list = (ArrayList)ar.AsyncState; // 获取传递的参数
Socket socket = (Socket)list[];
int port = (int)list[];
AutoResetEvent arevent = (AutoResetEvent)list[]; if (ar.IsCompleted && socket.Connected) {
Console.WriteLine("port: {0} open.", port); // 检查 connected属性, 如果为true 则表示是开放的
}
else {
Console.WriteLine("port: {0} closed.", port);
}
try {
socket.Shutdown(SocketShutdown.Both);
socket.Close();
}
catch {
}
arevent.Set(); // 完成后触发
}
}

扫描指定ip的端口(C#)的更多相关文章

  1. CentOS6.5 配置防火墙+允许指定ip访问端口

    参考博文: iptables防火墙只允许指定ip连接指定端口.访问指定网站 一.配置防火墙 打开配置文件 [root@localhost ~]# vi /etc/sysconfig/iptables ...

  2. centos7 firewall指定IP与端口访问(常用)

    1.启动防火墙 systemctl start firewalld.service 2.指定IP与端口 firewall-cmd --permanent --add-rich-rule="r ...

  3. pycharm中指定ip和端口

    pycharm中指定ip和端口 环境: 系统:win7 本机ip:192.168.0.100 1.建立工程请参照:https://www.cnblogs.com/effortsing/p/103945 ...

  4. centos7 firewall指定IP与端口、端段访问(常用)

    https://blog.csdn.net/yipianfuyunsm/article/details/99998332 https://www.cnblogs.com/co10rway/p/8268 ...

  5. MySQL指定ip和端口连接数据库,并修改数据库密码

    一.指定ip和端口连接数据库 命令 mysql -u root -h (ip) -P (端口)-p 假设ip是:127.0.0.1:端口是:13326,连接的命令: mysql -u root -h ...

  6. python - socket - client端指定ip和端口

    问题描述: 在设备中有3个NI, ip分别为192.168.1.5/6/7.其中本端192.168.1.6同对端192.168.1.10建立了一个tunnel. 我希望测试tunnel连通性, 对端起 ...

  7. 运行Django项目指定IP和端口

    默认IP和端口 python manage.py runserver 指定端口: python manage.py runserver 192.168.12.12:8080 此时会报错,我们需要修改配 ...

  8. tcpdump指定IP和端口抓包

    如下指定抓www.baidu.com 并且80端口的包 保存到test.cap 可以在Windows下面用wireshark打开 tcpdump 'port 80 and host www.baidu ...

  9. pycharm开发flask指定ip、端口无效

    原因分析 是因为使用了pycharm的版本的问题.并不是flask框架本身的问题(不管你是如何设置的flask配置,通过加载config也好,还是通过run的时候传入形参也好,均不影响) 可以很明显的 ...

随机推荐

  1. 存在继承关系的Java类对象之间的类型转换(一)

      类似于基本数据类型之间的强制类型转换. 存在继承关系的父类对象和子类对象之间也可以 在一定条件之下相互转换. 这种转换需要遵守以下原则: 1.子类对象可以被视为是其父类的一个对象2.父类对象不能被 ...

  2. [Python] numpy.sum

    import numpy as np #Syntax: numpy.sum(a, axis=None, dtype=None, out=None, keepdims=<class numpy._ ...

  3. oracle实例侦听

    在oracle服务器端命令行中执行 C:\>lsnrctl进入到 LISNRCTL>界面 键入help字符会回显相关的帮助命令

  4. Cordova+Vue构建Hybrid APP简易实操

    当下APP市场,因为Native APP开发成本高,Web APP不稳定,混合开发APP大行其道,成为越来越多开发者的首选.Hybrid APP开发框架也比较多,Weex.Ionic.PhoneGap ...

  5. 可视化库-Matplotlib-条形图(第四天)

    1.画两个条形图,bar和barh, 同时axes[0].axhline画一条横线,axes[1].axvline画一条竖线 import numpy as np import matplotlib. ...

  6. 如何让自己的exe程序开机自启动

    方法一. ①鼠标右键自己的exe程序,创建快捷方式 ②win+R,打开运行对话框,输入shell:startup,如下图: 将exe文件的的快捷方式拷贝到这个目录下,然后下次重启的时候自己的应用程序就 ...

  7. oracle ora-01652无法通过128(在表空间xxx中)扩展 问题解决方式

    问题原因建立的表空间dbf文件大小上限了 一. select * from dba_data_files 使用该条语句可以查看当前库中有多少表空间并且DBF文件的存储位置 二.查看表空间是否开启了自动 ...

  8. 【转】Unity Scene场景自定义坐标轴

    来自:https://blog.csdn.net/cheng624/article/details/70859054 多看看别人的代码是没有坏处的,即使学不了人家的大框架,偶尔拾起一些小东西也是可以的 ...

  9. ant的hello world很好的官方文档[z]

    http://ant.apache.org/manual/tutorial-HelloWorldWithAnt.html

  10. Region在connection前后进行“交并差”等操作的异同

    connection直译为“连接”.其实它的功能不是连接,它的功能是确定区域之间的连接关系,如果简单粗暴地解释的话,可以认为:connection的意思是“打散”,将不连接的区域打散成一个一个的区域. ...