扫描指定ip的端口(C#)
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#)的更多相关文章
- CentOS6.5 配置防火墙+允许指定ip访问端口
参考博文: iptables防火墙只允许指定ip连接指定端口.访问指定网站 一.配置防火墙 打开配置文件 [root@localhost ~]# vi /etc/sysconfig/iptables ...
- centos7 firewall指定IP与端口访问(常用)
1.启动防火墙 systemctl start firewalld.service 2.指定IP与端口 firewall-cmd --permanent --add-rich-rule="r ...
- pycharm中指定ip和端口
pycharm中指定ip和端口 环境: 系统:win7 本机ip:192.168.0.100 1.建立工程请参照:https://www.cnblogs.com/effortsing/p/103945 ...
- centos7 firewall指定IP与端口、端段访问(常用)
https://blog.csdn.net/yipianfuyunsm/article/details/99998332 https://www.cnblogs.com/co10rway/p/8268 ...
- MySQL指定ip和端口连接数据库,并修改数据库密码
一.指定ip和端口连接数据库 命令 mysql -u root -h (ip) -P (端口)-p 假设ip是:127.0.0.1:端口是:13326,连接的命令: mysql -u root -h ...
- python - socket - client端指定ip和端口
问题描述: 在设备中有3个NI, ip分别为192.168.1.5/6/7.其中本端192.168.1.6同对端192.168.1.10建立了一个tunnel. 我希望测试tunnel连通性, 对端起 ...
- 运行Django项目指定IP和端口
默认IP和端口 python manage.py runserver 指定端口: python manage.py runserver 192.168.12.12:8080 此时会报错,我们需要修改配 ...
- tcpdump指定IP和端口抓包
如下指定抓www.baidu.com 并且80端口的包 保存到test.cap 可以在Windows下面用wireshark打开 tcpdump 'port 80 and host www.baidu ...
- pycharm开发flask指定ip、端口无效
原因分析 是因为使用了pycharm的版本的问题.并不是flask框架本身的问题(不管你是如何设置的flask配置,通过加载config也好,还是通过run的时候传入形参也好,均不影响) 可以很明显的 ...
随机推荐
- 七、配置ssh keys连通github跟ssh-agent
jenkins+github配置完成后,能够实现在提交pull request或者直接push时,能够将提交的代码拉去一份到服务器本地,并自动merge:但是代码拉去下来了,部署环境的时候却需要输入登 ...
- asp.net 不用控件,自动登录(用于和其他系统对接的时候,自动登录系统,用户体验好)
if (System.Web.Security.Membership.ValidateUser("admin", "123456")) { //这句话很重要,他 ...
- C#使用UUID生成ID
tring id = System.Guid.NewGuid().ToString(); 一句话即可,但此时id中有“-”符号存在,使用下面语句可变为纯字母+数字. string id = Syste ...
- leetcode69
public class Solution { public int MySqrt(int x) { long r = x; while (r * r > x) r = (r + x / r) ...
- 如何快速选中某单元格所在的整行或整列 Excel教程
我们可以使用快捷键的操作来快速选中B3单元格所在的整行或整列,操作方法如下,请大家参阅! 一.正规的快捷键操作 ①快速选中整行 按下键盘上的 Shift Space 即同时按下键盘上的Shift 空格 ...
- python's @property
[python's @property] 参考:http://docs.python.org/3/library/functions.html?highlight=property#property
- java把流抛给浏览器下载时,当下载的文件文件名为中文时,出现中文名被替换为“----------”的情况
比如说,下载的文件名为: 软件分析报告.docx,当使用流抛给浏览器下载时,浏览器下载的文件为:-----------.docx 出现这种情况的原因:大体的原因就是header中只支持ASCII,所以 ...
- ORA-01795: maximum number of expressions in a list is 1000
今天发现查询Oracle用In查询In的元素不可以超过1000个还需要分成多个1000查询记录博客备忘!! Load Test的时候发现这么如下这个错误.... ORA-01795: maximum ...
- Kafka命令行常用命令说明
基于0.8.0版本. ##查看topic分布情况kafka-list-topic.sh bin/kafka-list-topic.sh --zookeeper 192.168.197.170:2181 ...
- jquery记录
jquery validate验证框架 参考:http://www.cnblogs.com/linjiqin/p/3431835.html http://www.runoob.com/jquery/j ...