mfc 串口-mfc多线程端口扫描

hacker|
205

多线程端口扫描器

扫描器么,当然是用来检查端口是否开放的,如果检查到端口开放,可以尝试进行连接,比如3389是远程桌面之类的,然后发送简单的用户名密码去尝试登录..........

MFC多线程安全问题。

使用 CEvent 类

CEvent 类提供了对事件的支持。事件是一个允许一个线程在某种情况发生时,唤醒另外一个线程的同步

对象。例如在某些网络应用程序中,一个线程(记为A)负责监听通讯端口,另外一个线程(记为B)负责更

新用户数据。通过使用CEvent 类,线程A可以通知线程B何时更新用户数据。每一个CEvent 对象可以有两种

状态:有信号状态和无信号状态。线程监视位于其中的CEvent 类对象的状态,并在相应的时候采取相应的操

作。

在MFC中,CEvent 类对象有两种类型:人工事件和自动事件。一个自动CEvent 对象在被至少一个线程释

放后会自动返回到无信号状态;而人工事件对象获得信号后,释放可利用线程,但直到调用成员函数

ReSetEvent()才将其设置为无信号状态。在创建CEvent 类的对象时,默认创建的是自动事件。 CEvent 类的

各成员函数的原型和参数说明如下:

1、CEvent(BOOL bInitiallyOwn=FALSE,

BOOL bManualReset=FALSE,

LPCTSTR lpszName=NULL,

LPSECURITY_ATTRIBUTES lpsaAttribute=NULL);

bInitiallyOwn:指定事件对象初始化状态,TRUE为有信号,FALSE为无信号;

bManualReset:指定要创建的事件是属于人工事件还是自动事件。TRUE为人工事件,FALSE为自动事件;

后两个参数一般设为NULL,在此不作过多说明。

2、BOOL CEvent::SetEvent();

将 CEvent 类对象的状态设置为有信号状态。如果事件是人工事件,则 CEvent 类对象保持为有信号状

态,直到调用成员函数ResetEvent()将 其重新设为无信号状态时为止。如果CEvent 类对象为自动事件,则

在SetEvent()将事件设置为有信号状态后,CEvent 类对象由系统自动重置为无信号状态。

如果该函数执行成功,则返回非零值,否则返回零。 3、BOOL CEvent::ResetEvent();

该函数将事件的状态设置为无信号状态,并保持该状态直至SetEvent()被调用时为止。由于自动事件是

由系统自动重置,故自动事件不需要调用该函数。如果该函数执行成功,返回非零值,否则返回零。我们一

般通过调用WaitForSingleObject函数来监视事件状态。

你可以看看链接的资料,应该可以解决的

或者,定义个BOOL变量,当第一个线程执行完为TRUE,然后第二个线程查询它,当为TRUE是执行

mfc 多线程问题

在windows下做服务器最好的方案是IOCP(I/O Complete port),中文名I/O完成端口

性能很不错。涉及windows高级编程,难学指数比较高

你的的感觉很不错,这个方案不可行:

1.会浪费大量CPU时间。一台计算机CPU个数有限,如果你的计算机只有2个CPU,却开了200线程。这个时候在同一时间,最多有2个线程在运行(因为你只有2个CPU),但是线程的不断切换让你感觉好像200个都在运行,只不过速度很慢。(此时线程切换会耗掉大量CPU时间,得不偿失)。

2.浪费内存。线程在windows中需要用数据表示,200个线程,开销有点浪费(虽然现在内存都很大,但是我们不能浪费)

3.线程同步问题会让你晕掉的,200个线程并发处理是很麻烦的,要进行线程同步,以及线程通信,同步和通信是多线程必须深思熟虑的。

4.有一个很不错的解决方案---IOCP

关于IOCP的学习,网上资料很多在此不多言。

enjoy coding

多线程(端口扫描器)是如何提高程序的执行效率的?

你认为多线程CPU时间片不断切换是影响多线程执行的原因,对吧。

但是呢,要知道现在CPU主频都是很快的(微秒级甚至纳秒级),所以有一些操作CPU只需要很少时间就可以完成了,其它的时间,如果没有主动调度它,CPU都处于空闲状态。比方说,TCP/UDP连接时,一方发出数据包,在等待另一方返回数据包的过程中(毫秒级)(最简单的,可以参考TCP三次握手的过程),这段时间就处于空闲状态。

这就是多线程为什么高效率的原因了,操作系统可以充分把这毫秒级的时间利用起来,发起另一个TCP连接,然后再在这个连接的网络延迟时间内,继续新的连接扫描……

这就是多线程的优势了,楼主忽略了多线程可以利用CPU空余时间这个关键问题,哪怕多线程之间的时间片会额外花费更多的CPU时间,但是空余时间的利用完全可以弥补这相当小的开销。

端口扫描器使用教程

端口扫描器一个端口扫描器,能够扫描出你的电脑或者IP和某一个网站的端口是否被占用,可以扫描哪些端口是开放的,可以自定义IP或网址,自定义开始端口,结束端口进行扫描,工具多线程运行,扫描速度非常快,用来测试端口扫描是方便了。

如果你要查询80是否被占用?

你只需要在开始端口和结束端口输入:80即可!

你也可以输入1-9999进行扫描!

软件名称:

端口扫描器

v1.0

绿色版

软件大小:540KB下载地址:

多线程后台扫描器是什么

青岛恒星职业技术学院这位童鞋

多线程 是指此程序在进程中开辟多个线程,加快扫描速度。

多线程的好处是可以加快扫描速度,但是对计算机资源占用量大。

后台是指在后台扫描 你可以理解为隐藏窗口,只是在任务管理器上显示一个进程。

扫描器 有很多种,一般是指端口扫描器。

0条大神的评论

发表评论