Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi IP addressen ermittlen (https://www.delphipraxis.net/69806-ip-addressen-ermittlen.html)

ghost007 20. Mai 2006 01:19


IP addressen ermittlen
 
Hallo,
ich habe folgendes problem.
Ich hoste ein game in Warcraft 3 (wem das nihcts sagt, ein strategie-spiel).
Da ich der host bin, sind alle clients über einen festen port mit mir verbunden, default port 6223.
Gibt es eine möglichkeit, die IPs aller über den port 6223 verbundenen clients zu ermitteln?

Danke schon mal - Ghost

Fighterno1 20. Mai 2006 06:32

Re: IP addressen ermittlen
 
Ja Klar, wenn du den Server aufmachst schon.
DU musst irgendwo in deiner Serveranwendung (zumindest wenn dus mit ServerSockets machst)
eine Schleife ähnlich der:
For i:=0 TO ServerSocket1.Socket.ActiveConnections - 1 do
begin
ListBox1.Items.Add(ServerSocket1.Socket.Connection s[i].RemoteAddress);//In Listbox1 werden dann alle gesammelt
end;

So, oder so ähnlich, könnte das aussehen.
Wenn du allerdings das fertige War Craft 3 Serverdingens nimmst wird das schon schwieriger, bis unmöglich.

ghost007 20. Mai 2006 07:07

Re: IP addressen ermittlen
 
gibts es da ekine möglichkeit,
den port zu "scanen" oder so was?

Klaus01 20. Mai 2006 08:10

Re: IP addressen ermittlen
 
Hallo ghost007,

versuch mal netstat -h auf der command line.

Grüße
Klaus

ghost007 20. Mai 2006 08:30

Re: IP addressen ermittlen
 
aha ... da kann ich aber keine funktion finden, die mir irgendwie weiterhilft -.-

Sharky 20. Mai 2006 08:51

Re: IP addressen ermittlen
 
Hast Du netstat schon einmal ohne einen Parameter aufgerufen?

ErazerZ 20. Mai 2006 09:03

Re: IP addressen ermittlen
 
Delphi-Quellcode:
netstat -an | find "6223"

Klaus01 20. Mai 2006 09:03

Re: IP addressen ermittlen
 
bei mr brngt es benutzte Ports und IP Adressen,
das wolltest Du doch, doer?

Grüße
Klaus
Code:
C:\>netstat -n

Active Connections

  Proto Local Address         Foreign Address       State
  TCP   127.0.0.1:1032         127.0.0.1:1033         ESTABLISHED
  TCP   127.0.0.1:1033         127.0.0.1:1032         ESTABLISHED
  TCP   192.168.178.20:1031    213.165.64.22:110      TIME_WAIT
  TCP   192.168.178.20:1039    81.209.184.99:80       TIME_WAIT
  TCP   192.168.178.20:1049    81.209.184.99:80       CLOSE_WAIT

C:\>
Code:
C:\>netstat -a

Active Connections

  Proto Local Address         Foreign Address       State
  TCP   pc1:epmap             pc1:0                  LISTENING
  TCP   pc1:microsoft-ds      pc1:0                  LISTENING
  TCP   pc1:1025               pc1:0                  LISTENING
  TCP   pc1:1026               pc1:0                  LISTENING
  TCP   pc1:1029               pc1:0                  LISTENING
  TCP   pc1:1033               pc1:0                  LISTENING
  TCP   pc1:1032               pc1:0                  LISTENING
  TCP   pc1:1032               pc1:1033               ESTABLISHED
  TCP   pc1:1033               pc1:1032               ESTABLISHED
  TCP   pc1:http              pc1:0                  LISTENING
  TCP   pc1:netbios-ssn       pc1:0                  LISTENING
  TCP   pc1:netbios-ssn       pc1:0                  LISTENING
  TCP   pc1:1031               pop.gmx.net:pop3       TIME_WAIT
  TCP   pc1:1039               dd2414.kasserver.com:http TIME_WAIT
  UDP   pc1:epmap             *:*
  UDP   pc1:371                *:*
  UDP   pc1:microsoft-ds      *:*
  UDP   pc1:1027               *:*
  UDP   pc1:netbios-ns        *:*
  UDP   pc1:netbios-dgm       *:*
  UDP   pc1:netbios-ns        *:*
  UDP   pc1:netbios-dgm       *:*

C:\>

ghost007 20. Mai 2006 09:52

Re: IP addressen ermittlen
 
jo, so funktionierts und wie kann ich jetzt die daten aus der konsole auslesen?
Das z.b. alle IPs die über den port 6223 connected sind, in eine lisbox kommen?

Hawkeye219 20. Mai 2006 09:59

Re: IP addressen ermittlen
 
Hallo Christian,

schaue mal in diesen Thread.

Gruß Hawkeye

ghost007 20. Mai 2006 10:26

Re: IP addressen ermittlen
 
Hallo,
Danke hawk, aber ehrlich gesagt ist mir das zu viel arbeit .. geht das nicht kürzer?

Hawkeye219 20. Mai 2006 10:41

Re: IP addressen ermittlen
 
Ich dachte eigentlich an Beitrag #7 des Threads. Den Code (Prozedure RunConsoleApp) kannst du direkt kopieren und in eine Unit auslagern. Der Aufruf der Routine sieht eigentlich ziemlich simpel aus. In deinem Fall könnte es so aussehen:

Delphi-Quellcode:
RunConsoleApp('cmd.exe /c netstat -a', Memo1.Lines);
Nach dem Aufruf stehen die gewünschten Informationen im Memo für die Weiterverarbeitung zur Verfügung.

Gruß Hawkeye

Klaus01 20. Mai 2006 12:14

Re: IP addressen ermittlen
 
obwohl es hier schon eine Lösung gibt,
hier noch einer Alternative: http://www.faqsen.de/delphi/tutorial...84851/tut1.jsp

Grüße
Klaus

ghost007 20. Mai 2006 13:44

Re: IP addressen ermittlen
 
Danke, so funktioniert es,
gibts es jetzt noch eine möglich keit irgendwelche infromationen über den user, des clients zu erhalten?
Von dem ich die IP weiß.

Klaus01 20. Mai 2006 14:16

Re: IP addressen ermittlen
 
dazu müsstest Du wohl den Netztraffic mitsniffen
und daraus den Username filtern.

Grüße
Klaus

ghost007 20. Mai 2006 14:18

Re: IP addressen ermittlen
 
aha, und wie funktioniert so was?
Gibts da vll ein tutorial oder so was?
Oder ne komponente?

Klaus01 20. Mai 2006 14:22

Re: IP addressen ermittlen
 
schau Dir das mal an: http://groups.google.de/group/de.com...0cbf9fa6e2bf27
oder das -> http://www.beesync.com/packetx/index.html

Habe damit aber keine Erfahrung.

Grüße
Klaus

ghost007 20. Mai 2006 14:39

Re: IP addressen ermittlen
 
ok,danke.
Eine letzte frage hätte ich da noch, kann ich irgendwie die verbindung zu einer bestimmten IP-Addresse, eines über den port 6223 connecteten Clients, trennen?

Daniel G 20. Mai 2006 15:04

Re: IP addressen ermittlen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Kannst du, wenn es sich bei der Verbindung um einen TCP/IP - Verbidung handelt. UDP wüsste ich jetzt nicht... Guck' einfach mal in diese meine Unit, das C - Original stammt von sysinternals.com

ghost007 20. Mai 2006 15:12

Re: IP addressen ermittlen
 
oha, hast du das auch in delphi tags?
das is ein gewirr, da kennt sich keine s** aus

Daniel G 20. Mai 2006 17:18

Re: IP addressen ermittlen
 
Zitat:

Zitat von ghost007
oha, hast du das auch in delphi tags?

Hä?

Sharky 20. Mai 2006 17:26

Re: IP addressen ermittlen
 
Zitat:

Zitat von ghost007
oha, hast du das auch in delphi tags?

Hai ghost007,

Du musst mit der rechten Maustaste auf "Download" klicken und dann "Speichern unter auswählen". Sonst wird das ganze im Webbroser (bei mir zumindest) ohne Zeilenumbrüche angezeigt.

Also einfach die Datei wie beschrieben auf die Platte kopieren und dann in einem Editor deiner Wahl öffnen.

ghost007 20. Mai 2006 17:27

Re: IP addressen ermittlen
 
^^ :mrgreen: so schlau war ich noch.
Aber was ist das?

[EDIT]sry, hatte da was verpeilt.
ne frage zu der unit, was is kRow?
Das is der parameter den man bei CloseTCPConnection angeben muss.

Daniel G 20. Mai 2006 17:34

Re: IP addressen ermittlen
 
Zitat:

Zitat von ghost007
Aber was ist das?

Das ist eine Delphi - Unit. Mit ein paar undokumentierten Win32 - Funktionen drinne... Guck' dir mal diese Links an:

http://www.sysinternals.com/Utilities/TcpView.html
http://www.faqsen.de/delphi/tutorial...84851/tut1.jsp hat Klaus01 gepostet.

Ich hab' dazu noch ein Beispielprogramm, nur wollte ich dir das jetzt nicht fertig vor'n Latz werfen. Guck' dir einfach mal den zweiten Link genauer an, dann kannst du auch mit meiner Unit etwas mehr anfangen... :zwinker:

//Edit: Ah, ok...
Zitat:

ne frage zu der unit, was is kRow?
Das ist eine Struktur vom Typ MIB_TCPROW
Delphi-Quellcode:
_MIB_TCPROW = packed record
    dwState,
    dwLocalAddr,
    dwLocalPort,
    dwRemoteAddr,
    dwRemotePort: DWORD;
  end;
  MIB_TCPROW = _MIB_TCPROW;
  PMIB_TCPROW = ^MIB_TCPROW;
Steht aber auch so in der Unit.

ghost007 20. Mai 2006 20:37

Re: IP addressen ermittlen
 
mit welchen, und wie muss ich dann die kRow mit informationen füttern?

[EDIT]Hab zwar schon viel gemacht, aber von records (das scheihnt mir einer zu sein) hab ich keine ahnung :(

Daniel G 20. Mai 2006 21:07

Re: IP addressen ermittlen
 
:roll:

Also, mit diesen beiden Funktionen

Delphi-Quellcode:
Function GetTcpTable(Table: PMIB_TCPTABLE; dwSize: PDWORD; bOrder: BOOL): DWORD; stdcall; external 'iphlpapi.dll';

Function GetUdpTable(Table: PMIB_UDPTABLE; dwSize: PDWORD; bOrder: BOOL): DWORD; stdcall; external 'iphlpapi.dll';

Bekommst du alle Verbindungen, jeweils UDP und TCP/IP.

PMIB_TCPTABLE sieht so aus:

Delphi-Quellcode:
_MIB_TCPTABLE = packed record
    dwNumEntries: DWORD;
    table: Array[0..0] of MIB_TCPROW;
  end;
  MIB_TCPTABLE = _MIB_TCPTABLE;
  PMIB_TCPTABLE = ^MIB_TCPTABLE;
So weit kapiert? Und jetzt kannst du eine Verbindung beenden, wenn du z.B.

Delphi-Quellcode:
var
TCPTable: PMIB_TCPTABLE;
//[...]
begin
//Alle TCP - Verbindungen auflisten
GetTcpTable(TCPTable,SizeOf(TCPTable),True);

//Wir schließen die Dritte Verbindung
kRow := TCPTable.Table[2];
CloseTCPConnection(kRow);
end;
das war's....

ghost007 20. Mai 2006 21:53

Re: IP addressen ermittlen
 
danke, werde mir das mal zu gemühte führen


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:37 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