linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘网络学院网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > 开发语言 > Delphi >
栏目导栏
  php
  JSP
  ASP
  asp.net
  JAVA
  c/c++/c#
  perl
  JavaScript
  Basic
  Delphi
资料搜索
热门文章
·HexToStr函数和StrToHex函数
·Delphi中的进制转换
·delphi轻松设置无边框透明窗体
·delphi第三方控件安装(Ehlib)
·DELPHI组件安装全攻略
·delphi动态创建控件
·开发工具比较Visual C++ VS De
·delphi完整身份证效验程序实例
·delphi中的Format函数详解
·delphi编程获取打印机的打印任
·如何判断文本文件的编码格式
·深入研究Variant数组
·用delphi编写网络游戏的外挂
·Delphi技巧-用户自定义数据类型
·delphi设置控件透明
最新文章
·在应用程序中跟踪MOUSE的坐标
·压缩和修复MS Access 2000文件
·DELPHI 6.0 动画制做
·怎样在Delphi中调用LastError信
·怎样得到主域服务器名称
·怎样利用递归实现删除某一目录
·读出主键下所有项
·如何制作照片底片效果的图像(
·获得Modem的状态
·WebBrowser屏幕滚动的实现,设
·有关字符串处理的小技巧
·Delphi建立键盘鼠标动作纪录与
·Delphi中布尔类型辨析
·DELPHI程序注册码设计
·图形的不规则的Copy
Google
 
delphi端口扫描
[ 作者:  加入时间:2007-12-03 14:39:06  来自:Linux联盟收集整理 ]
如果你写扫描程序可千万不要直接去连接,应该使用别的链接方法,否则你的踪迹会被别人发现.例如使用sys扫描或者fin扫描:7J2Linux联盟
7J2Linux联盟
我给你异步socket的api代码:7J2Linux联盟
unit Unit1;7J2Linux联盟
interface7J2Linux联盟
uses7J2Linux联盟
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,7J2Linux联盟
StdCtrls,WInSock, ExtCtrls;7J2Linux联盟
7J2Linux联盟
const WM_SOCKET=WM_USER+1; //socket消息7J2Linux联盟
7J2Linux联盟
type7J2Linux联盟
TForm1 = class(TForm)7J2Linux联盟
Button1: TButton;7J2Linux联盟
Edit1: TEdit;7J2Linux联盟
Panel1: TPanel;7J2Linux联盟
Memo1: TMemo;7J2Linux联盟
procedure FormCreate(Sender: TObject);7J2Linux联盟
procedure FormDestroy(Sender: TObject);7J2Linux联盟
procedure Button1Click(Sender: TObject);7J2Linux联盟
procedure Button2Click(Sender: TObject);7J2Linux联盟
procedure Button3Click(Sender: TObject);7J2Linux联盟
private7J2Linux联盟
Sockhd : integer; //socket句柄7J2Linux联盟
Serv_Addr : Tsockaddr;//目标地址7J2Linux联盟
7J2Linux联盟
procedure SockEvent(var msg: Tmessage);message WM_SOCKET; //处理cocket消息7J2Linux联盟
procedure DspMsg(msg : string); //显示信息7J2Linux联盟
{ Private declarations }7J2Linux联盟
public7J2Linux联盟
{ Public declarations }7J2Linux联盟
end;7J2Linux联盟
7J2Linux联盟
Form1: TForm1;7J2Linux联盟
7J2Linux联盟
implementation7J2Linux联盟
{$R *.DFM}7J2Linux联盟
7J2Linux联盟
function lookup_hostname(const hostname:string):longint; //把域名转化成IP地址7J2Linux联盟
var7J2Linux联盟
RemoteHost : PHostEnt; (* no, don‘t free it! *)7J2Linux联盟
ip_address: longint;7J2Linux联盟
begin7J2Linux联盟
ip_address:=-1;7J2Linux联盟
try7J2Linux联盟
if hostname=‘‘ then7J2Linux联盟
begin (* no host given! *)7J2Linux联盟
lookup_hostname:=ip_address;7J2Linux联盟
EXIT;7J2Linux联盟
end7J2Linux联盟
else7J2Linux联盟
begin7J2Linux联盟
ip_address:=Winsock.Inet_Addr(PChar(hostname)); (* try a xxx.xxx.xxx.xx first *)7J2Linux联盟
if ip_address=SOCKET_ERROR then begin7J2Linux联盟
RemoteHost:=Winsock.GetHostByName(PChar(hostname));7J2Linux联盟
if (RemoteHost=NIL) or (RemoteHost^.h_length<=0) then7J2Linux联盟
begin7J2Linux联盟
lookup_hostname:=ip_address;7J2Linux联盟
EXIT; (* host not found *)7J2Linux联盟
end7J2Linux联盟
else7J2Linux联盟
ip_address:=longint(pointer(RemoteHost^.h_addr_list^)^);7J2Linux联盟
end;7J2Linux联盟
end;7J2Linux联盟
except7J2Linux联盟
ip_address:=-1;7J2Linux联盟
end;7J2Linux联盟
lookup_hostname:=ip_address;7J2Linux联盟
end;7J2Linux联盟
7J2Linux联盟
procedure TFOrm1.DspMsg(msg: string);7J2Linux联盟
begin7J2Linux联盟
memo1.Lines.Add(msg+‘...‘);7J2Linux联盟
if Memo1.Lines.Count>200 then Memo1.Lines.Delete(0);7J2Linux联盟
end;7J2Linux联盟
7J2Linux联盟
procedure TForm1.SockEvent(var msg : tmessage); //处理socket消息7J2Linux联盟
begin7J2Linux联盟
case msg.LParam of7J2Linux联盟
FD_READ: begin //标识可以读数据,当然肯定已经链接上了7J2Linux联盟
dspmsg(‘可以读取数据‘);7J2Linux联盟
//do what you want do7J2Linux联盟
end;7J2Linux联盟
7J2Linux联盟
FD_WRITE: begin7J2Linux联盟
dspmsg(‘可以发送数据‘);7J2Linux联盟
//do what you want do7J2Linux联盟
end;7J2Linux联盟
7J2Linux联盟
FD_ERROR: begin7J2Linux联盟
dspmsg(‘发生错误‘);7J2Linux联盟
//如果你是客户端,则应该是连接不上,即端口没有开 7J2Linux联盟
end;7J2Linux联盟
7J2Linux联盟
FD_CLOSE: Begin7J2Linux联盟
dspmsg(‘服务器断开连接‘);7J2Linux联盟
//对方关闭连接7J2Linux联盟
end;7J2Linux联盟
7J2Linux联盟
FD_CONNECT: begin7J2Linux联盟
dspmsg(‘连结上服务器‘);7J2Linux联盟
//表示对方端口开放7J2Linux联盟
end;7J2Linux联盟
7J2Linux联盟
FD_ACCEPT: begin7J2Linux联盟
dspmsg(‘接收一个请求‘);7J2Linux联盟
//这个消息只有服务端可能出现7J2Linux联盟
end;7J2Linux联盟
end;7J2Linux联盟
end;7J2Linux联盟
7J2Linux联盟
procedure TForm1.FormCreate(Sender: TObject);7J2Linux联盟
var wsaData:TwsaData;7J2Linux联盟
begin //启动winsock动态链接库7J2Linux联盟
if WSAStartup (makeword(2,2), wsaData)<>0 then begin7J2Linux联盟
messagebox(application.handle,‘无法启动winsock动态连接库!‘,‘警告‘,MB_OK or MB_APPLMODAL or MB_ICONWARNING);7J2Linux联盟
Application.Terminate;7J2Linux联盟
end; 7J2Linux联盟
end;7J2Linux联盟
7J2Linux联盟
procedure TForm1.FormDestroy(Sender: TObject);7J2Linux联盟
begin //关闭dll7J2Linux联盟
WSACleanup;7J2Linux联盟
end;7J2Linux联盟
7J2Linux联盟
procedure TForm1.Button1Click(Sender: TObject);7J2Linux联盟
begin7J2Linux联盟
Sockhd := socket(AF_INET,SOCK_STREAM,0); //创建socket句柄7J2Linux联盟
if Sockhd<0 then begin7J2Linux联盟
messagebox(application.handle,‘无法创建句柄!‘,‘警告‘,MB_OK or MB_APPLMODAL or MB_ICONWARNING);7J2Linux联盟
exit;7J2Linux联盟
end;7J2Linux联盟
Serv_addr.sin_addr.s_addr:= lookup_hostname(edit1.Text); //主机名7J2Linux联盟
Serv_addr.sin_family := PF_INET;7J2Linux联盟
Serv_addr.sin_port := htons(23); //any port you want to connect7J2Linux联盟
7J2Linux联盟
if WSAAsyncSelect(Sockhd,Form1.handle,WM_SOCKET,FD_ACCEPT or FD_CONNECT or FD_CLOSE or FD_READ or FD_WRITE)=SOCKET_ERROR7J2Linux联盟
then begin7J2Linux联盟
messagebox(application.handle,‘无法创建句柄!‘,‘警告‘,MB_OK or MB_APPLMODAL or MB_ICONWARNING);7J2Linux联盟
exit;7J2Linux联盟
end; //异步socket7J2Linux联盟
connect(sockhd,serv_addr,sizeof(serv_addr)); //连接,结果会在前面的处理函数处理7J2Linux联盟
end;7J2Linux联盟
7J2Linux联盟
end.7J2Linux联盟
相信应该可以满足你的要求  7J2Linux联盟
Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·Linux网络端口扫描工具Nmap And Nwatch  (2007-08-12 11:01:36)
 ·Linux端口扫描工具nmap and nwatch  (2006-01-05 08:49:39)