Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Netzwerverbinung möglich? (https://www.delphipraxis.net/38757-netzwerverbinung-moeglich.html)

whiteshark 23. Jan 2005 19:57


Netzwerverbinung möglich?
 
Moin Leute!
Kann mir jemand sagen, ob man überprüfen kann, ob zu einer bekannten IP eine Netzwerkverbindung möglich ist?

Chewie 23. Jan 2005 20:00

Re: Netzwerverbinung möglich?
 
Du schickst einen Ping hin, wenn er zurück kommt, gibts ne Verbindung.
Wenn keiner zurückkommt, muss das aber noch lange nicht heißen, dass keine Verbindung existiert.

kill -9 23. Jan 2005 20:09

Re: Netzwerverbinung möglich?
 
Das Thema gab's schon mal...

Versuch Hier im Forum suchenICMPSENDECHO, da findest du
bestimmt was... :wink:

whiteshark 23. Jan 2005 20:36

Re: Netzwerverbinung möglich?
 
es geht darum, dass wir ein Netzwerkspiel programmieren! Wenn nun ein Client das Spiel startet muss er herausfinden, ob der Server vorhanden ist! Oder soll der User des Spieles jedesmal erst den Server pingen? :-D
Deswegen frage ich, ob man irgendwie eine Kontrolle in das Spiel einbinden kann?

mschaefer 23. Jan 2005 20:45

Re: Netzwerverbinung möglich?
 
Moin,

auch wenn ich da derzeit keine Lösung habe: Hier geht es darum ob ein bestimmter Port auf einem
Rechner reagiert. Nur die IP-anpingen bringt zwar den laufenden Rechner zum vorschein, sagt aber
noch nichts über den gestarteten Server oer Cleint aus.

Grüße // Martin

FHProgger 26. Jan 2005 09:14

Re: Netzwerverbinung möglich?
 
Als erstes kann man doch einfach alle PC im Netz ermitteln, dann hat man die IPs in einer Liste und kann bei jeder IP das zugeordnete Port abfragen, ob dort das Serverprogramm läuft.
Die Procedure:

Delphi-Quellcode:
procedure TMainForm.GetLANPCs(List: TStrings);

  procedure EnumFunc(NetResource: PNetResource);
  var
    Enum: THandle;
    Count, BufferSize: DWORD;
    Buffer: array[0..16384 div SizeOf(TNetResource)] of TNetResource;
    i: Integer; S: String;
  begin
    if WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, NetResource,
    Enum) = NO_ERROR then
    try
      Count := $FFFFFFFF;
      BufferSize := SizeOf(Buffer);
      while WNetEnumResource(Enum, Count, @Buffer, BufferSize) = NO_ERROR do
        for i := 0 to Count - 1 do
        begin
          if Buffer[i].dwDisplayType = RESOURCEDISPLAYTYPE_SERVER then begin
            S:=Buffer[i].lpRemoteName;
            Delete(S,1,2);
            List.Add(S);
          end;
          if (Buffer[i].dwUsage and RESOURCEUSAGE_CONTAINER) > 0 then
            EnumFunc(@Buffer[i])
        end;
    finally
      WNetCloseEnum(Enum);
    end;
  end;

begin
  EnumFunc(nil);
end;


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