文章目录

  • 一、端口扫描器程序
    • 1.1、单线程
    • 1.2、多线程

一、端口扫描器程序

1.1、单线程

1、创建工程

选择类型

设置界面


代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Net.Sockets;namespace dan
{public partial class Form1 : Form{public Form1(){InitializeComponent();}private int port;//记录当前扫描的端口号private string Address;//记录扫描的系统地址private bool[] done = new bool[65536];//记录端口的开放状态private int start;//记录扫描的起始端口private int end;//记录扫描的结束端口private bool OK;private void button1_Click(object sender, EventArgs e){label4.Text = textBox2.Text;label6.Text = textBox3.Text;progressBar1.Minimum = Int32.Parse(textBox2.Text);progressBar1.Maximum = Int32.Parse(textBox3.Text);listBox1.Items.Clear();listBox1.Items.Add("端口扫描器v1.0.");listBox1.Items.Add("");PortScan();}private void PortScan(){start = Int32.Parse(textBox2.Text);end = Int32.Parse(textBox3.Text);//判断输入端口是否合法if ((start >= 0 && start <= 65536) && (end >= 0 && end <= 65536) && (start <= end)){listBox1.Items.Add("开始扫描:这个过程可能需要等待几分钟!");Address = textBox1.Text;for (int i = start; i <= end; i++){port = i;Scan();progressBar1.Value = i;label5.Text = i.ToString();}while (!OK){OK = true;for (int i = start; i <= end; i++){if (!done[i]){OK = false;break;}}}listBox1.Items.Add("扫描结束!");}else{MessageBox.Show("输入错误,端口范围为[0,65536]");}}private void Scan(){int portnow = port;done[portnow] = true;TcpClient objTCP = null;try{objTCP = new TcpClient(Address, portnow);listBox1.Items.Add("端口" + portnow.ToString() + "开放");}catch{}}}
}

结果

1.2、多线程

代码


using System;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace PortScan
{public partial class Form1 : Form{public Form1(){InitializeComponent();}//自定义变量private int port;//记录当前扫描的端口号private string Address;//记录扫描的系统地址private bool[] done = new bool[65536];//记录端口的开放状态private int start;//记录扫描的起始端口private int end;//记录扫描的结束端口private bool OK;private Thread scanThread;  //将输入的起始端口放到进度条的开始位置private void label4_TextChanged(object sender, EventArgs e){label4.Text = textBox2.Text;}//将输入的结束地址放到进度条的结束位置private void label6_TextChanged(object sender, EventArgs e){label6.Text = textBox3.Text;}private void button1_Click(object sender, EventArgs e){label4_TextChanged(sender, e);label6_TextChanged(sender, e);//创建线程,并创建ThreadStart委托对象Thread procss = new Thread(new ThreadStart(PortScan));procss.Start();//显示端口扫描范围progressBar1.Minimum = Int32.Parse(textBox2.Text);progressBar1.Maximum = Int32.Parse(textBox3.Text);//显示框的初始化listBox1.Items.Clear();listBox1.Items.Add("端口扫描器v1.0.");listBox1.Items.Add("");}private void PortScan(){start = Int32.Parse(textBox2.Text);end = Int32.Parse(textBox3.Text);//检查端口的合法性if ((start >= 0 && start <= 65536) && (end >= 0 && end <= 65536) && (start <= end)){listBox1.Items.Add("开始扫描:这个过程可能需要等待几分钟!");Address = textBox1.Text;for (int i = start; i <= end; i++){port = i;//对该端口进行扫描的线程scanThread = new Thread(Scan);scanThread.Start();//使线程睡眠System.Threading.Thread.Sleep(100);progressBar1.Value = i;label5.Text = i.ToString();}//未完成时情况while (!OK){OK = true;for (int i = start; i <= end; i++){if (!done[i]){OK = false;break;}}}listBox1.Items.Add("扫描结束!");System.Threading.Thread.Sleep(1000);}else{MessageBox.Show("输入错误,端口范围为[0,65536]");}}private void Scan(){int portnow = port;//创建线程变量Thread Threadnow = scanThread;done[portnow] = true;//创建TcpClient对象,TcpClient用于TCP网络服务提供客户端连接TcpClient objTCP = null;//扫描端口,成功就写入信息try{objTCP = new TcpClient(Address, portnow);listBox1.Items.Add("端口" + portnow.ToString() + "开放!");}catch{}}}
}

TCP编程——端口扫描器与网游客户端相关推荐

  1. 【C#】VS编写简单的网游客户端

    文章目录 一.测试连接服务器 二.设计客户端 1.新建项目 2.设计界面 3.代码实现 三.总结 四.参考链接 一.测试连接服务器 1.打开cmd,输入ping 10.1.230.74 2.输入tel ...

  2. C#编写简单的网游客户端

    文章目录 一.连接游戏服务器 二.设计客户端 2.1创建项目 2.2 设计界面 三.功能实现 3.1 连接到服务器并接受服务器发来的数据 3.2 客户端发送数据到服务器 3.3 播放背景音乐 3.4 ...

  3. 面向监狱编程 - 石胖子写网游外挂 (2) 加密和解密

    " 本故事纯属虚构,如有雷同纯属巧合." 0  游戏的加密 对着网游<天x八x>的网络请求数据,研究了一阵子,石胖子,才搞明白.原来游戏的请求数据使用了对称加密的算法. ...

  4. 面向监狱编程 - 石胖子写网游外挂 (1) 请求是乱码

    " 本故事纯属虚构,如有雷同纯属巧合." ​ 0  穷中年男人的苦 - 学区房 某年,某家互联网金融公司(俗称p2p)的开发工程师石胖子.最近由于老婆闹着要给孩子买学区房,心情烦闷 ...

  5. C#实现简单的网游客户端编程

    目录 一.项目创建 1.创建新项目 2.选择窗体应用 二.界面设计 1.图片PictureBox设置 2.总的界面 三.代码实现 1.服务器连接 2.发送确定按钮 3.结果 4.播放背景音乐 5.变换 ...

  6. 用C#编写一个简单的网游客户端

    文章目录 1,代码 2,结果如下 3,完整代码 4,总结 5,参考 1,代码 先新建项目 设计界面 记住,还有拖动一个timer到picturebox上 双击开始游戏,进入代码编写界面 private ...

  7. VS编写简单的网游客户端

    目录 一.测试连接服务器 二.设计客户端 三.连接服务器 1.在Form中初始化进入游戏: 2.设置播放背景音乐 3.实现游戏背景图片变换 四.运行结果 五.总结 六.参考文献 一.测试连接服务器 1 ...

  8. JAVA进阶案例 TCP编程之网络聊天工具(客户端)

    首先附上登录操作 登录界面就不说了,直说业务处理.当点击登录之后 /** 如果点击了登录按钮 首先判断帐号或者密码是否为空 然后封装为CommandTranser对象 向服务器发送数据 服务器通过与数 ...

  9. 3. Port scanners (端口扫描器 4个)

    3. Port scanners (端口扫描器 4个) 愤怒的IP扫描器是一个小的开源Java应用程序,它执行主机发现("ping扫描")和端口扫描. 旧的2.x版本只有Windo ...

最新文章

  1. DLT(DeepLearningTracker)学习与代码理解 (1)
  2. 8种Nosql数据库系统对比
  3. redux react ajax,使用react-redux触发事件操作
  4. 需求分析中适应性怎么写_商业计划书中的市场分析怎么写,这样才完整!
  5. HP DL360 G7安装esxi 6.0
  6. 如何设计一个高可用、高并发秒杀系统
  7. MATLAB加入螺旋相位板调制,平板式螺旋相位板的设计与应用
  8. 网络协议栈深入分析(五)--套接字的绑定、监听、连接和断开
  9. vue中获取输入框中得到值_如何获取vue input的值
  10. ORACLE学习笔记--性能优化3
  11. 男孩子一定要注意保护自己!
  12. ICCV 2021可逆的跨空间映射实现多样化的图像风格传输:Diverse Image Style Transfer via Invertible Cross-Space Mapping
  13. 2006年中国首届杰出数据库工程师评选面试实录
  14. 中国电信物联网平台入门学习笔记6:电信平台数据模拟采集
  15. 【极客学院】-iOS学习笔记-2-Xcode(安装,创建项目,工作空间)
  16. 解析2019年新零售社区团购发展方向
  17. nacos运行报jar的错Failed to get nested archive for entry BOOT-INF/lib/XXX.jar
  18. oracle数据库分页查询
  19. STM32单片机基于HAL库开发HC-SR04 超声波测距模块(终极版)
  20. 立创eda学习笔记九:图层

热门文章

  1. 从 Java sleep 来看 arm64 Linux 内核都干了些什么?
  2. 沿曲线运动的彗星拖尾效果实现Demo(JavaScript)
  3. 前端Element-UI中show-overflow-tooltip属性不生效
  4. C++【坑人神器:绝地求生小游戏3.0】震撼上线
  5. 正确理解运营商切换对eSIM的价值?
  6. Mybatis返回类型和Java常见对象类型
  7. app账号退不出去_摩拜App告别江湖!停止服务和运营后要用车怎么办?操作指南...
  8. java画雪花_java版雪花生成
  9. CRC-16/XMODEM串行计算的Verilog源码及仿真
  10. 6月3号绝地求生服务器维护,2020年绝地求生6月3日更新维护开服时间 绝地求生6月3日更新维护了哪些...