Форум: "Сети";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];
ВнизПорт Найти похожие ветки
← →
Klopan © (2004-09-07 19:33) [0]как узнать что например порт 4500 используется другим приложением
← →
Rouse_ © (2004-09-07 20:31) [1]Порт на своей или удаленной машине?
← →
Klopan © (2004-09-07 20:43) [2]на своей
← →
Rouse_ © (2004-09-08 10:09) [3]Вот этот код покажет тебе все открытые порты на твоей машине:
////////////////////////////////////////////////////////////////////////////////
//
// ****************************************************************************
// * Unit Name : Unit1
// * Purpose : Демо получения ТСР статистики
// * Author : Александр (Rouse_) Багель
// * Version : 1.00
// ****************************************************************************
//
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Winsock;
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
procedure Button1Click(Sender: TObject);
end;
PTMibTCPRow = ^TMibTCPRow;
TMibTCPRow = packed record
dwState: DWORD;
dwLocalAddr: DWORD;
dwLocalPort: DWORD;
dwRemoteAddr: DWORD;
dwRemotePort: DWORD;
end;
PTMibTCPTable = ^TMibTCPTable;
TMibTCPTable = packed record
dwNumEntries: DWORD;
Table: array[0..0] of TMibTCPRow;
end;
function GetTcpTable( pTCPTable: PTMibTCPTable; var pDWSize: DWORD;
bOrder: BOOL): DWORD; stdcall; external "IPHLPAPI.DLL";
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
Size: DWORD;
TCPTable: PTMibTCPTable;
I: DWORD;
begin
GetMem(TCPTable, SizeOf(TMibTCPTable));
Size := 0;
if GetTcpTable(TCPTable, Size, True) = ERROR_INSUFFICIENT_BUFFER then
begin
FreeMem(TCPTable);
GetMem(TCPTable, Size);
if GetTcpTable(TCPTable, Size, True) = NO_ERROR then
for I := 0 to TCPTable^.dwNumEntries - 1 do
Memo1.Lines.Add(Format("%s:%d", [inet_ntoa(in_addr(TCPTable^.Table[I].dwLocalAddr)),
TCPTable^.Table[I].dwLocalPort]));
end;
end;
end.
← →
Rouse_ © (2004-09-08 10:11) [4]Точнее процедура правильней должна выглядеть так:
procedure TForm1.Button1Click(Sender: TObject);
var
Size: DWORD;
TCPTable: PTMibTCPTable;
I: DWORD;
begin
GetMem(TCPTable, SizeOf(TMibTCPTable));
try
Size := 0;
if GetTcpTable(TCPTable, Size, True) <> ERROR_INSUFFICIENT_BUFFER then Exit;
finally
FreeMem(TCPTable);
end;
GetMem(TCPTable, Size);
try
if GetTcpTable(TCPTable, Size, True) = NO_ERROR then
for I := 0 to TCPTable^.dwNumEntries - 1 do
Memo1.Lines.Add(Format("%s:%d", [inet_ntoa(in_addr(TCPTable^.Table[I].dwLocalAddr)),
TCPTable^.Table[I].dwLocalPort]));
finally
FreeMem(TCPTable);
end;
end;
← →
Klopan © (2004-09-08 21:09) [5]спасибо большущщее!
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.039 c