Реферат Курсовая Конспект
Лекция Программная реализация программы типа NetStat - раздел Информатика, Лекция «Программная Реализация Программы Типа Netstat С Параметром – А. ...
|
Лекция «Программная реализация программы типа NetStat с параметром – а.
Рис.1. Схема алгоритма программы.
2. Опишем структуры и функции, которые используются в программе:
2.1 Структуры, которые реализуют структуру протокола TCP:
// Описание соединения
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;
2.2 Структуры, которые реализуют структуру протокола UDP:
PTMibUDPRow = ^TMibUDPRow;
TMibUDPRow = packed record
dwLocalAddr: DWORD;
dwLocalPort: DWORD;
end;
PTMibUDPTable = ^TMIBUDPTable;
TMIBUDPTable = packed record
dwNumEntries: DWORD;
UDPTable: array[0..0] of TMibUDPRow;
end;
Структуру протокола TCP заполняет функция GetTCPTable:
GetTCPTable(TcpTable, @TableSize,TRUE)
где TcpTable – сменная типа PTMibTCPTable,
TableSize – размер сменной.
Структуру протокола UDP заполняет функция GetUDPTable:
GetUDPTable(UdpTable, @TableSize,TRUE)
где UdpTable – сменная типа PTMibUDPTable,
TableSize – размер сменной.
Пооператорная схема алгоритма
1. Если Тср-протокол, загружаем функцию, которая реализует протокол – GetTCPTable;
GetTcpTable: function(Table: PTMibTCPTable; dwSize: PDWORD; bOrder: BOOL): DWORD; stdcall;
2. Проверка на ошибки:
if TCP.Checked = true then
Если есть ошибка, выйти из программы(exit), если нет:
2.1. Выделить память под Тср-таблицу;
GetMem(TcpTable, TableSize);
2.2. Заполнение таблицы протокола:
for i := 0 to TcpTable.dwNumEntries - 1 do
begin
if TcpTable.Table[i].dwRemoteAddr = 0 then
TcpTable.Table[i].dwRemotePort := 0;
StringGrid1.RowCount:=StringGrid1.RowCount+1;
StringGrid1.Cells[0,i+1]:='TCP';
StringGrid1.Cells[1,i+1]:=IPAddrToName(TcpTable.Table[i].dwLocalAddr,true)+':'+GetPort(TcpTable.Table[i].dwLocalPort,'TCP');
StringGrid1.Cells[2,i+1]:=IPAddrToName(TcpTable.Table[i].dwRemoteAddr,false)+':'+IntToStr(htons(TcpTable.Table[i].dwRemotePort));
StringGrid1.Cells[3,i+1]:=pchar(TCPConnState[TcpTable.Table[i].dwState]);
end;
2.2.1. Имя (ТСР);
2.2.2. Локальный адрес:
IPAddrToName(TcpTable.Table[и].dwLocalAddr,true)+':'+GetPort(TcpTable.Table[и].dwLocalPort,'TCP'). IPAddtToName – получает доменное имя по ІР. GetPort – получает имя протокола по открытому порту и протоколу ТСР(UDP);
2.2.3. Внешний адрес:
IPAddrToName(TcpTable.Table[и].dwRemoteAddr,false)+':'+IntToStr(htons(TcpTable.Table[и].dwRemotePort));
2.2.4. Состояние:
pchar(TCPConnState[TcpTable.Table[и].dwState]);
2.3. Освобождение памяти
FreeMem(TcpTable).
3. Если UDP-протокол, загружаем функцию, которая реализует протокол – GetUDPTable;
GetUdpTable: function(Table: PTMibUDPTable; dwSize: PDWORD; bOrder: BOOL): DWORD; stdcall;
3.1. Проверка на ошибки:
if UDP.Checked = true then
Если есть ошибка, выйти из программы(exit), если нет:
3.2. Выделить память под UDP-таблицу;
GetMem(UdpTable, TableSize);
3.3. Заполнение таблицы протокола:
for i := 0 to UdpTable.dwNumEntries - 1 do
begin
StringGrid1.RowCount:=StringGrid1.RowCount+1;
StringGrid1.Cells[0,i+1]:='UDP';
StringGrid1.Cells[1,i+1]:=IPAddrToName(UdpTable.UDPTable[i].dwLocalAddr,true) +':'+GetPort(UdpTable.UDPTable[i].dwLocalPort,'UDP');
StringGrid1.Cells[2,i+1]:='*.*';
StringGrid1.Cells[3,i+1]:='';
end;
3.3.1. Имя (UDP);
3.3.2. Локальный адрес:
IPAddrToName(TcpTable.Table[и].dwLocalAddr,true)+':'+GetPort(UdpTable.Table[и].dwLocalPort,'UDP'). IPAddtToName – получает доменное имя по ІР. GetPort – получает имя протокола по открытому порту и протоколу ТСР(UDP);
4.2.3.Внешний адрес – записываем “*”;
StringGrid1.Cells[2,i+1]:='*.*';
4.2.4 Состояние – “”;
StringGrid1.Cells[3,i+1]:='';
4.3. Освобождение памяти – FreeMem(UdpTable).
Результат работы Netstat –a
Внимание!Результаты написанной программы и Netstat отличаются, потому что они были загружены на разных машинах.
– Конец работы –
Используемые теги: Лекция, Программная, Реализация, программы, типа, NetStat0.088
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Лекция Программная реализация программы типа NetStat
Если этот материал оказался полезным для Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Новости и инфо для студентов