Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как оперделить все IP и порты на моем компьютере

Delphi , Интернет и Сети , TCP/IP



Автор: Spawn
WEB-сайт: http://forum.vingrad.ru

Функции GetTcpTable, GetUdpTable.

Импорт GetTcpTable:

unit TcpTable;
interface
type
  PDWord = ^Longword;
  PMIB_TCPROW = ^TMIB_TCPROW;
  TMIB_TCPROW = record
    dwState: LongWord;
    dwLocalAddr: LongWord;
    dwLocalPort: LongWord;
    dwRemoteAddr: LongWord;
    dwRemotePort: LongWord;
  end;
  PMIB_TCPTABLE = ^TMIB_TCPTABLE;
  TMIB_TCPTABLE = record
    dwNumEntries: LongWord;
    table: array[0..0] of TMIB_TCPROW;
  end;

function GetTcpTable(var TcpTable: PMIB_TCPTABLE;
  var Size: PDWord; bOrder: Boolean): LongWord; stdcall

implementation

function GetTcpTable; external 'Iphlpapi.dll' name 'GetTcpTable';

end.

Вызов GetTcpTable:

{$R-}
Entries := 16;
Sz := SizeOf(TMIB_TCPTABLE) + SizeOf(TMIB_TCPROW) * (Entries - 1);
pMibTable := nil;
try
  repeat
    ReallocMem(pMibTable, Sz);
    Res := GetTcpTable(pMibTable^, Sz, False);
  until Res <> ERROR_INSUFFICIENT_BUFFER;
  if Res <> NO_ERROR then
  begin
    ShowMessage(SysErrorMessage(Res));
    exit;
  end;
  for Entries := 0 to pMibTable.dwNumEntries - 1 do
  begin
    < Делать что - то >
  end;
finally
  FreeMem(pMibTable);
end;
{$R+}

Вот перевод текста на русский язык:

Это фрагмент кода Delphi, использующий функцию GetTcpTable, чтобы получить информацию о всех TCP-соединениях на вашем компьютере. Вот шаг за шагом, что он делает:

  1. Код определяет тип для указателя на запись TMIB_TCPROW, которая представляет собой запись в таблице TCP.
  2. Он также определяет тип для указателя на запись TMIB_ TCPTABLE, которая представляет собой всю таблицу TCP.
  3. Функция GetTcpTable объявляется, которая принимает три параметра: указатель на запись TMIB_ TCPTABLE (для хранения результата), указатель на значение типа LongWord (для хранения размера буфера, необходимого для хранения) и логическое флаг (bOrder) , которое определяет, должна ли таблица быть отсортирована по локальному адресу.
  4. Код вызывает GetTcpTable повторно, пока не получит достаточно памяти, чтобы хранить всю таблицу TCP. Он использует ReallocMem, чтобы динамически выделить память для буфера, и проверяет возвращаемое значение GetTcpTable, чтобы увидеть, является ли буфер достаточным.
  5. Если буфер недостаточно, код отображает сообщение об ошибке и завершается.
  6. Когда буфер достаточен, код проходит по каждой записи в таблице TCP и делает что-то (текущее комментировано). Петельный цикл iterates over all entries in the table, which can be accessed via pMibTable.dwNumEntries.
  7. Наконец, код освобождает выделенную память с помощью FreeMem.

Чтобы использовать этот код, вам нужно:

  1. Создать новый проект Delphi.
  2. Добавить unit TcpTable в ваш список используемых.
  3. Вызвать функцию GetTcpTable в вашем основном программе или обработчике событий.

Вот пример, как можно модифицировать код для печати всех IP-адресов и портов:

for Entries := 0 to pMibTable.dwNumEntries - 1 do
begin
  with pMibTable.table[Entries] do
  begin
    ShowMessage('Local Address: ' + IntToIP(dwLocalAddr) + ':' + IntToStr(dwLocalPort));
    ShowMessage('Remote Address: ' + IntToIP(dwRemoteAddr) + ':' + IntToStr(dwRemotePort));
  end;
end;

Это будет печатать локальный и удаленный IP-адреса и порты для каждого TCP-соединения. Обратите внимание, что это только простой пример, и вам может потребоваться добавить более ошибок или фильтрации в зависимости от вашего конкретного требования.

Также помните, что этот код только получает информацию о TCP-соединениях. Если вы также хотите получить информацию о UDP-соединениях, вам нужно использовать функцию GetUdpTable вместо нее (или обе функции, если вы хотите получить информацию обо всех типах сокетов).

Определить все IP и порты на компьютере можно с помощью функций GetTcpTable и GetUdpTable, которые возвращают информацию о состоянии сокетов и таблицах TCP/IP.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: TCP/IP ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 08:47:18/0.007969856262207/1