AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Probleme mit netstat
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit netstat

Ein Thema von Innos · begonnen am 16. Sep 2007 · letzter Beitrag vom 17. Sep 2007
 
Innos

Registriert seit: 5. Jun 2007
142 Beiträge
 
#2

Re: Probleme mit netstat

  Alt 17. Sep 2007, 15:50
hab hier so ein Tutorial...

http://www.faqsen.de/delphi/tutorial...84851/tut1.jsp

das verstehe ich aber nicht so recht habe des mal alles eingefügt und dann kamen einige fehler-.-

bin mir nicht mal sicher wie man genau nun diese "iphlpapi.dll" einbindet...

jedenfalls startet das programm aber es steht in dem ListView nur "TCP" da und das mehrere male

mein code
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    ListView1: TListView;
    function getIP(var addr) : string;
    procedure holeTcpTable;
    function getPort(var addr) : string;
    function getTCPState(status : integer) : string;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
var
  cCode: Word;
  L : record // L ist ein Record für das Auslesen der Werte
  cbRequired : Longint; // wird gebraucht, um die benötigte Buffer-Größe zu ermitteln
  nStructSize : LongInt; // Größe der Struktur
  tmp : String;
  end;
  type TMIB_TCPROW = record
  dwState : LongInt; //state of the connection
  dwLocalAddr : array[0..3]of byte ; //address on local computer
  dwLocalPort : array[0..3]of byte ; //port number on local computer
  dwRemoteAddr : array[0..3]of byte ; //address on remote computer
  dwRemotePort : array[0..3]of byte ; //port number on remote computer
  end;

  type TMIB_TCPTABLE = record
  dwNumEntries : Longint; //number of entries in the table
  table : array [0..100] of TMIB_TCPROW; //array of TCP connections
  end;
  function GetTcpTable (pTcpTable: Pointer; var pdwSize : Longint; bOrder : Longint): Longint;stdcall;
  stdcall; external 'iphlpapiname 'GetTcpTable';

  Const MIB_TCP_STATE_CLOSED = 0;
  Const MIB_TCP_STATE_LISTEN = 1;
  Const MIB_TCP_STATE_SYN_SENT = 2;
  Const MIB_TCP_STATE_SYN_RCVD = 3;
  Const MIB_TCP_STATE_ESTAB = 4;
  Const MIB_TCP_STATE_FIN_WAIT1 = 5;
  Const MIB_TCP_STATE_FIN_WAIT2 = 6;
  Const MIB_TCP_STATE_CLOSE_WAIT = 7;
  Const MIB_TCP_STATE_CLOSING = 8;
  Const MIB_TCP_STATE_LAST_ACK = 9;
  Const MIB_TCP_STATE_TIME_WAIT = 10;
  Const MIB_TCP_STATE_DELETE_TCB = 11;

{$R *.dfm}

procedure TForm1.holeTcpTable;
var liItem : Tlistitem;
var liste : TListitems;
var subitem : TStringlist;
var m_pTcpTable : ^TMIB_TCPTABLE;
var i : integer;

begin
    Liste := Tlistitems.Create(listview1);
    listview1.Items.Clear;

    m_pTcpTable := nil;
    ZeroMemory(@L,sizeof(L));

    cCode := GetTcpTable(m_pTcpTable,L.cbRequired,0);
    GetMem(m_pTcpTable,L.cbRequired);
    ZeroMemory (m_pTcpTable,L.cbRequired);

    cCode := GetTcpTable(m_pTcpTable,L.cbRequired,0); // cCode als global vereinbarte Variable vom Type Word, um den Rückgabewert der API-Funktion zu erhalten
    if cCode <> ERROR_SUCCESS then
    begin
       showmessage ('Fehler bei GetTcpTable ' + inttostr(cCode));
    end
    else
    begin

       for i:= 0 to m_pTcpTable.dwNumEntries-1 do
       begin
       showmessage('A');
          liItem := liste.Add;
          subitem := TStringlist.Create;
          subitem.Add(getIp(m_pTcpTable^.table[i].dwLocalAddr));
          liItem.SubItems:=subitem;
          liItem.Caption := 'TCP';
          liItem.SubItems.Add (getPort(m_pTcpTable^.table[i].dwLocalPort));
          liItem.SubItems.Add (getIp(m_pTcpTable^.table[i].dwRemoteAddr));
       if (m_pTcpTable^.table[i].dwState-1 <> MIB_TCP_STATE_LISTEN) then
       begin
       showmessage('B');
          liItem.SubItems.Add (getPort(m_pTcpTable^.table[i].dwRemotePort));
       end
       else
       begin
       showmessage('C');
         liItem.SubItems.Add ('0');

       end;
       showmessage('D');
       liItem.SubItems.Add (getTCPState(m_pTcpTable^.table[i].dwState));
       end;
       end;
end;

// ein paar Funktionen zur Formatierung...

function TForm1.getIP(var addr) : string;
var daten : array[0..3] of byte absolute addr;
begin
    result := Format('%d.%d.%d.%d',[Daten[0],daten[1],Daten[2],Daten[3]])
end;


function TForm1.getPort(var addr) : string;
var daten : array[0..3] of byte absolute addr;
begin
    result := Format('%d',[Daten[0]*256+daten[1]]);
end;

function TForm1.getTCPState(status : integer) : string;
begin
    status := status -1 ;
    if status = 0 then result := 'closed';
    if status = 1 then result := 'listen';
    if status = 2 then result := 'SYN_Sent';
    if status = 3 then result := 'SYN_Rcvd';
    if status = 4 then result := 'established';
    if status = 5 then result := 'Fin wait 1';
    if status = 6 then result := 'Fin wait 2';
    if status = 7 then result := 'Close wait';
    if status = 8 then result := 'closing';
    if status = 9 then result := 'last Ack.';
    if status = 10 then result := 'time wait';
    if status = 11 then result := 'delete TCB';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
holeTcpTable;
end;

end.
es muss ja nicht gleich die lösung sein aber bitte helft mir das n bissl zu verstehn^^
zB was ist: '%d.%d.%d.%d'



mfg
Innos
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz