
;win32汇编环境,网络编程入门之十七
;在这一教程里,学习一下,如何多线程大规模搜索可访问的域名,即搜索可用网址
;本示例是,启动3条同步线程循环访问生成的网址,看其结果是否200.搜索的是abc0000.com,abc0001.com,abc0002.com至abc1000.com之内的1000个域名
;同步线程的意思,即调用函数后不是马上返回,需等函数有结果了才返回。
;多条线程进行,则每条线程结束的时间并不相同,有可能先运行的后结束,也可能后运行的先结束。
;所以,假如需要共享全局变量时,谨慎面对全局变量。
;比如A线程改变了全局变量,本来轮到B线程改变全局变量,但它还未结束,A线程第2次结束了,马上又改变了全局变量,这将导致一团糟。
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.386
.model flat,stdcall
option casemap:none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Include 文件定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include windows.inc
include user32.inc
include kernel32.inc
include wininet.inc ;需要添加的wininet头文件
includelib user32.lib
includelib kernel32.lib
includelib wininet.lib ;需要添加的wininet库文件
; 自定义函数声明
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
DlgProc proto :DWORD,:DWORD,:DWORD,:DWORD ;对话框窗口函数
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Equ 等值定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
MAINDIALOG equ 1
ICO_MAIN equ 1000 ;图标
ID_BUTTON01 equ 41
ID_EDIT01 equ 11
ID_EDIT02 equ 12
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 数据段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.data
szMsg db "提示",0
szErr db "错误",0
szFrm01 db "www.abc000%d.com",0
szFrm02 db "www.abc00%d.com",0
szFrm03 db "www.abc0%d.com",0
szRecCodeFrm db " 网站返回值是 %s",0
szEnter db 13,10,0 ;回车换行符
szAgent db "Microsoft Internet Explorer",0 ;骗网站说自已是IE浏览器
szUrlPath db "/",0 ;要访问的页面是主页
szVerb db "GET",0 ;GET方法访问
szAccept db "Accept: text/html",0 ;只接受text或html文件返回
.data?
hInstance HINSTANCE ?
hEdithwnd01 HWND ?
hEdithwnd02 HWND ?
szNewHostName db 128 dup (?) ;不同域名的字符串变量,须是全局变量
hAdd_1 dd ? ;用来产生1000个网站的数字
hThread01 dd ?
hThread02 dd ?
hThread03 dd ?
hThread04 dd ?
hThread05 dd ?
.const
; 代码段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.code
start:
invoke GetModuleHandle, NULL
mov hInstance,eax
invoke DialogBoxParam, hInstance, MAINDIALOG,NULL, addr DlgProc, NULL
invoke ExitProcess,eax
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;每调用本函数就生成新的域名,从 abc0001.com abc0002.com abc0003.com abc0004.com 直至 abc1000.com ,当然可以用不同的方式产生不同的域名
;>&

414

被折叠的 条评论
为什么被折叠?



