Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi TCPTable liefert falschen Port (https://www.delphipraxis.net/25745-tcptable-liefert-falschen-port.html)

c113plpbr 12. Jul 2004 19:19

Re: TCPTable liefert falschen Port
 
Für die lokale IP kannst du das hier verwenden um den rechnernamen herauszufinden:
Delphi-Quellcode:
GetServByPort(dwLocalPort, nil)
und für die remote IP das hier:
Delphi-Quellcode:
GetHostByAddr(PChar(@dwLocalAddr), SizeOf(DWORD), AF_INET)
versuchs einfach ... bei mir hats geklappt ... ^^ (setz einfach mal den 'schrott' da ein, und schau mal was rauskommt)

[edit]und falls es dann immer noch nicht geht: http://salvatoremeschini.cjb.net/ schau dir unter downloads netstat32 an[/edit]

Luckie 13. Jul 2004 01:16

Re: TCPTable liefert falschen Port
 
Ich willd ie IP ja nichjt auflösen. Ich will erstmal schon eine gescheite IP da stehen haben. Und ob mir der Lionk weiterhilft vage ich zu bezweifeln. Denn das verrückte ist ja, mein erstes Programm mit wietgehend identischen Code liefert keinen Schrott. Irgendwas mache ich anders, aber ich weiß eben nicht was. :evil:

Luckie 13. Jul 2004 03:22

Re: TCPTable liefert falschen Port
 
So, habe den Fehler gefunden:
Delphi-Quellcode:
function GetIPInfos: IPInfo;
var
  Error: DWORD;
  TCPTable: PMibTcpTable;
  UDPTable: PMibUdptable;
  NumEntriesTCP: DWORD;
  NumEntriesUDP: DWORD;
  dwSize: DWORD;
  i: Integer;
begin
  NumEntriesTCP := 0;
  Setlength(result, 0);
//  dwSize := 0;
//  Error := GetTcpTable(nil, dwSize, False);
//  if Error <> ERROR_INSUFFICIENT_BUFFER then
//    Exit;
//  GetMem(TCPTable, dwSize);
//  try
//    if GetTCPTable(TcpTable, dwSize, TRUE) = NO_ERROR then
//    begin
//      if TCPTable <> nil then
//      begin
//        NumEntriesTCP := TCPTable.dwNumEntries;
//        SetLength(result, NumEntriesTCP);
//        for i := 0 to NumEntriesTCP - 1 do
//        begin
//          result[i].Protocol := 'TCP';
//          result[i].localIP := TCPTable^.table[i].dwLocalAddr;
//          result[i].localPort := TCPTable^.table[i].dwlocalPort;
//          result[i].remoteIP := TCPTable^.table[i].dwRemoteAddr;
//          if TCPTable^.table[i].dwRemoteAddr = 0 then
//            TCPTable^.table[i].dwRemotePort := 0;
//          result[i].remotePort := TCPTable^.table[i].dwRemotePort;
//          result[i].Status := TCPTable^.table[i].dwState;
//        end;
//      end;
//    end;
//  finally
//    FreeMem(TCPTable, dwSize);
//  end;
  dwSize := 0;
  Error := GetUdpTable(nil, dwSize, False);
  if Error <> ERROR_INSUFFICIENT_BUFFER then
    exit;
  GetMem(UDPTable, dwSize);
  try
    if GetUdpTable(UDPTable, dwSize, TRUE) = NO_ERROR then
    begin
      if UDPTable <> nil then
      begin
        NumEntriesUDP := UDPTable.dwNumEntries;
        SetLength(result, NumEntriesUDP); {SetLength(result, NumEntriesTCP+NumEntriesUDP);}
        for i := 0 to NumEntriesUDP-1 do {for i := NumEntriesTCP to NumEntriesTCP+ NumEntriesUDP-1 do}
        begin
          result[i].Protocol := 'UDP';
          result[i].localIP := UDPTable^.table[i].dwLocalAddr;
          result[i].localPort := UDPTable^.table[i].dwLocalPort;
          result[i].remoteIP := 0;
          result[i].remotePort := 0;
          result[i].Status := 99;
        end;
      end;
    end;
  finally
    FreeMem(UDPTable, dwSize);
  end;
end;
Da geht irgendwo was schief mit dem Array füllen. Lasse ich den oberen Teil raus und fülle das Array nur mit den UDP Werten klappt alles wunderbar. Nehme ich den TCP Teil hinzu, stimmen sie nicht mehr. Was mache ich also falsch?

Luckie 13. Jul 2004 11:57

Re: TCPTable liefert falschen Port
 
Liste der Anhänge anzeigen (Anzahl: 1)
Um es noch mal deutlich zu machen. Das Array wird schon richtig verlängert, aber irgendwie stimmen die Werte dann nicht mehr, die dann da reingeschrieben werden.

Wer es selber noch mal testen will, dem habe ich das Projekt noch mal angehangen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:43 Uhr.
Seite 2 von 2     12   

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