关于端口监控的问题!请高手帮忙!! (84分)

  • 主题发起人 主题发起人 shean8375
  • 开始时间 开始时间
S

shean8375

Unregistered / Unconfirmed
GUEST, unregistred user!
我自己做了一个端口监控的程序,一有连接在label1里就显示对方的IP。
我的程序是成功了,但是为什么只有别人在浏览器里打我的IP才成功,而我打开某个网页却得不到他的IP。我知道是我的概念有问题,别人用tcp和我连接和我打开网页的这种tcp连接有什么区别。我的本意是想得到这个端口上所以有数据的源IP!
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,winsock, StdCtrls;

const
WM_SOCK = WM_USER + 1; //自定义windows消息
TCP_PORT =80; //设定TCP端口号

type
TForm1 = class(TForm)
Label1: TLabel;
procedure FormCreate(Sender: TObject);
private
procedure ReadData(var Message: TMessage); message WM_SOCK;
public
{ Public declarations }
end;

var
Form1: TForm1;
HasConnected, IsServer: boolean;
SvrSocket: integer;
SvrAddrIn, CliAddrIn:TSockAddrIn;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
wsadata: TWsadata;
begin
WSAStartup($0101,WSAData);
SvrSocket := socket(AF_INET, SOCK_STREAM,IPPROTO_IP);
if (SvrSocket = INVALID_SOCKET) then
begin
ShowMessage(inttostr(WSAGetLastError())+' Socket创建失败');
CloseSocket(SvrSocket);
exit;
end;
SvrAddrIn.sin_addr.s_addr:= INADDR_ANY;
SvrAddrIn.sin_family := AF_INET;
SvrAddrIn.sin_port :=htons(TCP_PORT);
Bind(SvrSocket, SvrAddrIn, sizeof(SvrAddrIn));
Listen(SvrSocket,5);
WSAAsyncSelect(SvrSocket, Handle , WM_SOCK, FD_READ or FD_ACCEPT or FD_CONNECT or FD_WRITE or FD_CLOSE);
end;

procedure tform1.ReadData(var message:Tmessage);
begin
label1.Caption:='成功';
end;
end.
 
怎么没人回答啊。分全给了。帮帮忙吧!
 
procedure TForm1.FormCreate(Sender: TObject);
var
wVersionRequested : WORD;
wsaData : TWSAData;
GetIP:PHostEnt;
begin
{启动 WinSock}
try
wVersionRequested := MAKEWORD(1, 1);
WSAStartup(wVersionRequested, wsaData);
GetIP:=GetHostByName('');
p2 := iNet_ntoa(PInAddr(GetIP^.h_addr_list^)^);
finally
WSACleanup;
end;
end;
USES中加Winsock
上面这段代码可获得本机IP
你如果要监听端口为什么不用TServerSocket
 
我要获得的是对方的IP地址,不是本机的,我用的是7.0里面没有TServerSocket
 
谁帮帮忙啊。虽然分不多~!~
还有怎么在Delphi 7里面使用D6 里的TServerSocket
 
哪们有源码!用TserverSocket做也可以!
 
看来你是要学习sniffer探嗅器之类的东东呀,
我正在搞这类东东,
主要放在肉鸡上使别人扫描器都扫不到,但端口却是打开的,
但若为我特定的IP格式数据就可以,
呵呵~~~~~~~~~~~~~~
 
to shean8375:
delphi7.0里面怎么会没有TServerSocket呢?其实delphi7大都包括以前的控件(除非已过时淘汰的),只是在delphi7里没显示出来而已。
方法:../Borland/Delphi7/Bin/dclsockets70.bpl,加上这个包你就能看见了!
如果要显示其他控件,也类似。
 

Similar threads

后退
顶部