c#爱好者请进~~~多线程问题~~~~~~求救,分不够再加

yitian130 2007-04-07 01:39:07
本人写了一个端口扫描器,扫描局域网内的指定ip段的主机.
扫描端口有两种方式,一种是输入起始、结束端口,
一种是在列表中选择要扫描的端口

软件在写成单线程的时候用的还好,当我把程序写成多线程的时候出了些问题

在软件界面上有个线程数combox,在里面选择了线程数后

单击扫描,程序开起combox里输入的线程数个线程,每个线程扫描一个ip的端口,并把扫描结果加到listbox中,主线程阻塞,等到线程不足combox里输入的线程数时,
主线程再开子线程,接着ip段内没扫描的ip往下扫~!!!!!!!!!!!!!!!

我是个新手,希望各位csdn的朋友们,帮帮我`!
我先谢过了~!!!!thank you ~!!
thank you very much~!!!!!!!

我的程序在这里:http://www.yitian130.com/portscan.rar
...全文
282 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yitian130 2007-04-10
  • 打赏
  • 举报
回复
结帖了
yitian130 2007-04-07
  • 打赏
  • 举报
回复
zhangliu_521()
的代码先copy了,等回到学校再调试~!先说谢谢了~!
yitian130 2007-04-07
  • 打赏
  • 举报
回复
单击扫描,程序开起combox里输入的线程数个线程,每个线程扫描一个ip的端口,并把扫描结果加到listbox中,主线程阻塞,等到线程不足combox里输入的线程数时,
主线程再开子线程,接着ip段内没扫描的ip往下扫~!!!!!!!!!!!!!!!

这些代码我注释掉了,现在在网吧,winxp sp1 没发调试~!

麻烦朋友们帮忙看一下~!
blestcc 2007-04-07
  • 打赏
  • 举报
回复
机器上装的还是2003,没法测试,只好看了一下代码,没看出来有什么问题。
zhangliu_521 2007-04-07
  • 打赏
  • 举报
回复
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;

namespace 多线程扫描网段
{
public partial class Form1 : Form
{
private DateTime startTime;
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
int min = (int)this.numericUpDown4.Value,max = (int)this.numericUpDown5.Value;
if (min>= max) { MessageBox.Show("网段输入错误!"); return; }
startTime = DateTime.Now;
string mask = this.numericUpDown1.Value.ToString() + "." + this.numericUpDown2.Value.ToString() + "." + this.numericUpDown3.Value.ToString();
this.progressBar1.Minimum = min;
this.progressBar1.Maximum = max;
Thread[] threads=new Thread[max-min +1];
while (min <= max)
{
Scan NewThreadScan = new Scan();
NewThreadScan.IP = mask + "." + min.ToString();
NewThreadScan.GetHostInfo = new HostInfo(newHostInfo);
threads[min - 1] = new Thread(new ThreadStart(NewThreadScan.start));
threads[min - 1].Start();
min++;
}
}
public void newHostInfo(string HostIP, string NewHostName)
{
this.setListBox(HostIP, NewHostName);
}


private void setListBox(string HostIp, string NewHostName)
{
if (listBox1.InvokeRequired && label4.InvokeRequired && progressBar1.InvokeRequired)
{
HostInfo b = new HostInfo(setListBox);
Invoke(b, new object[] { HostIp, NewHostName });
}
else
{
lock (listBox1)
{

listBox1.Items.Add(HostIp + "" + NewHostName);
if (progressBar1.Value != progressBar1.Maximum)
{
progressBar1.Value++;
}
else
{
MessageBox.Show("成功完成检测!");
DateTime endTime = DateTime.Now;
TimeSpan timeSp = endTime - startTime;
label4.Text = timeSp.Seconds.ToString() + "秒";
progressBar1.Value = progressBar1.Minimum;

}
}
}




using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.IO;

namespace 多线程扫描网段
{


class Scan
{
private string _IP;
public string _HostName;
public HostInfo GetHostInfo;
public string IP
{
get { return _IP; }
set { _IP = value; }
}

public Scan()
{

}

public void start()
{
IPAddress tempIp = IPAddress.Parse(_IP);
try
{
IPHostEntry Host = Dns.GetHostByAddress(tempIp);
_HostName = Host.HostName;
}
catch
{
_HostName = "主机没有反映";
}

if (this.GetHostInfo!=null)
{
this.GetHostInfo(_IP, _HostName);
}
}


}
}

云中客 2007-04-07
  • 打赏
  • 举报
回复
先看看
jian128 2007-04-07
  • 打赏
  • 举报
回复
帮顶
blestcc 2007-04-07
  • 打赏
  • 举报
回复
以前做过类似的东西,先去看下你的程序......
yitian130 2007-04-07
  • 打赏
  • 举报
回复
我的邮箱是lybyt130@163.com
哪个朋友改好了~!发我邮箱~!
我再说声谢谢~!
yitian130 2007-04-07
  • 打赏
  • 举报
回复
我先顶一下~!
【2025亚太杯B题】辐射制冷技术的建模与优化——亚太地区大学生数学建模竞赛(思路、代码、论文持续更新中.......)内容概要:本文档围绕2025亚太杯B题“辐射制冷技术的建模与优化”展开,提供数学建模竞赛所需的思路、代码和论文写作支持,内容持续更新。文档列举了大量科研仿真资源,涵盖智能优化算法、机器学习、路径规划、电力系统、信号处理等多个技术领域,重点服务于数学建模参赛者和技术研究人员。资源以Matlab和Python为主要实现工具,包含多种算法在实际问题中的应用案例,如粒子群优化、遗传算法、卡尔曼滤波、深度学习等,并提供配套代码和仿真模型。同时附有网盘链接,便于获取完整资料。; 适合人群:参加数学建模竞赛的本科生、研究生,具备一定编程基础(尤其是Matlab/Python)和数学建模能力的科研初学者;从事智能优化、电力系统、信号处理等相关领域的技术人员。; 使用场景及目标:①辅助完成亚太杯等数学建模竞赛题目,特别是B题辐射制冷技术的建模与优化;②为科研项目提供算法实现参考,提升仿真效率与模型精度;③学习多种智能算法在工程问题中的具体应用方式。; 阅读建议:建议按目录顺序系统浏览,结合提供的代码实例进行调试与复现,重点关注与自身研究方向相关的模块;充利用网盘资源,对照思路与代码深化理解,提升建模与编程实战能力。

111,119

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧