TCP编程端口扫描器与网游客户端
本次实验,博主将使用TCP来编写一个端口扫描器以及制作一个网游的客户端
1. 编写端口扫描器程序
1.1编程一个单线程端口扫描器
首先,打开VS2017,点击文件–>新建–>项目,选择Windows窗口应用,创建一个带界面的应用程序。
其次,进入窗口设计页面,现在的窗口应该是空白的一片,从工具栏中选择Label,TextBox,ProgressBar这三个类型的工具若干(如果没有工具箱,可以从视图-- >工具箱召唤出工具栏),在此介绍一下所用各工具的用处。
Label:为控件提供运行时的信息或者信息说明
TextBox:允许用户输入文本,或者输出文本(用作输入密码时可用字符掩码功能)
ProgressBar:显示一个向用户显示操作进程的填充条,俗称进度条。
按照以前所用的应用的大致界面,歪歪扭扭拼凑了一个简易的端口扫描器界面出来。
拼凑好后,将老师所给的代码经过修饰后加入进程序中(可双击控件召唤出编程界面)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net.Sockets;
using System.Threading;
namespace Port_Scanning
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
//不进行跨线程检查
CheckForIllegalCrossThreadCalls = false;
}
//主机地址
private string hostAddress;
//起始端口
private int start;
//终止端口
private int end;
//端口号
private int port;
//定义线程对象
private Thread scanThread;
//定义端口状态数据(开放则为true,否则为false)
private bool[] done = new bool[65526];
private bool OK;
private void button1_Click(object sender, EventArgs e)
{
try
{
//初始化
textBox4.Clear();
label5.Text = "0%";
//获取ip地址和始末端口号
hostAddress = textBox1.Text;
start = Int32.Parse(textBox2.Text);
end = Int32.Parse(textBox3.Text);
if (decideAddress())
{
textBox1.ReadOnly = true;
textBox2.ReadOnly =