Delphi-PRAXiS :: Das Forum für Fragen zu Delphi
Das Experten Forum für Delphi Programmierer
Hilfe für Borland Delphi gibts es hier im Forum
Delphi Quelltexte und Source Codes
 
Delphi-PRAXiS :: Foren-ÜbersichtForen-Übersicht Delphi-PRAXiS Modul-ÜbersichtSite-Map Delphi-PRAXiS durchsuchenSuchen Delphi-PRAXiS Code-LibraryCode-Library Jetzt registrieren!Registrieren Login  
   
 
0
 
Delphi für Win32
TClientSocket - Netzwerk nach Servern durchsuchen
Ein Delphi (Win32)-Thema von ZelltoD.

Vorheriges Thema anzeigen  |  Nächstes Thema anzeigen
Neuen Beitrag schreiben Auf Beitrag antworten
als PDF-Datei herunterladenThema ausdrucken
 Offene Frage von ZelltoD.
Delphi-PRAXiS Forum - Übersicht -> Internet / LAN / ASP.NET
Seite 1 von 1   [ 4 Beiträge ]  
 
 Autor 
 Nachricht 
 
ZelltoD #1|Beitrag #911534Verfasst am: 02.07.2008, 20:09      Titel: TClientSocket - Netzwerk nach Servern durchsuchen Antworten mit Zitat
Mitglied
Alter: 18
Status: offline
Beiträge: 23
angemeldet: 01.07.2008
RAD-Studio 2007 Architect

Sprache: Delphi (Win32)

Hallo erstmal.
Ich hab heute mal an einem kleinen Netzwerk-Chat angefangen, welcher, realisiert mit TClientSocket und TServerSocket realisiert, bisher einwandfrei läuft.
Jetzt hab ich aber folgende Probleme: Um die Sache noch ein bisschen auszubauen hab ich mich an eine Suchfunktion herangewagt die einen bestimmten, vorher definierbaren Bereich des Lokalen Netzwerkes nach Servern durchsucht.
Nach einigen Stunden herumprobiererei komme ich mal wieder nicht weiter ouch! .

Da ich ja nicht in allen möglichen, fremden Netzwerken suchen möchte, hab ich ersteinmal angefangen, die eigene IP in Blöcke aufzuteilen.

Delphi-Quellcode: zusammenfalten | markieren
repeat                    //String aufdröseln und sortieren beginn
   p:=p+1;
IF IP[p]='.then   p1:=p1+1 //"IP" ist die eigene IP als string

else
begin //of else
case p1 of
1: res1:=res1+IPll[p] ; //1. Block
2: res2:=res2+IPll[p] ;  //2. Block
3: res3:=res3+IPll[p] ;   //3. Block
4: res4:=res4+IPll[p] ;    //4. Block
      end;       //of case

end; //of else
until IP[p]='';
end;
end.


Danach werden, in Bereichen die später über Eingabemöglichkeiten bestimmt werden sollen, diese Blöcke einzeln verändert um danach verschiedene Ports nach Servern abzusuchen.

Delphi-Quellcode: zusammenfalten | markieren
procedure TForm1.Button1Click(Sender: TObject);
  var i,j,k,b3,b4,prt:integer;  hst:string; //b3 und b4 sind Block 3 und 4 der IP
begin
b3:=-1;
   b4:=-1;
     prt:=0; //prt = Port
for i := 0 to 3 do   begin//of for1
  b3:=b3+1;
    b4:=90;
   for j := 0 to 40 do   begin//of for2
     b4:=b4+1;
       prt:=0;
      for k := 0 to 10 do    begin//of for3
        prt:=prt+1;

/////////////////////////////////////////  PROBLEM

Falls an der Adresse ein Server gefunden wird soll die entsprechende IP dann in eine Liste übertragen werden.
Mein Problem liegt nun darin, dass ich nicht weis wie ich, falls ich ein Server gefunden wurde, den Client dazu bringe diesen anzupingen und die Verbindung gleich darauf wieder zu beenden um die Suche fortzusetzen.

Und wäre es möglich mit der IP die Anzahl der schon verbundenen Clients am Server festzustellen?

Ich hoffe ihr könnt mir helfen

mfg ZelltoD
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
sirius #2|Beitrag #911542Verfasst am: 02.07.2008, 20:29      Titel: Re: TClientSocket - Netzwerk nach Servern durchsuchen Antworten mit Zitat
sehr aktives Mitglied
Alter: 28
Status: offline
Beiträge: 2.107
angemeldet: 03.01.2007
Wohnort: Dresden
Delphi 7 Enterprise

Diese Sachen musst du am Server alle Selber implementieren. Schaffe dir ein eigenes Protokoll bzw. ergänze dein bisheriges.
Dein Server muss schon selber sagen wieviele Clients er hat.


Nebenbei:
1. Denke mal über UDP-Broadcast nach!
2. Eine IPv4-Adresse ist eine 32Bit-Zahl. Damit kann man bestimmt besser rechnen als mit der Darstellung im String.

Don't Feedure Windows
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
ZelltoD #3|Beitrag #911548Verfasst am: 02.07.2008, 20:39      Titel: Re: TClientSocket - Netzwerk nach Servern durchsuchen Antworten mit Zitat
Mitglied
Alter: 18
Status: offline
Beiträge: 23
angemeldet: 01.07.2008
RAD-Studio 2007 Architect

Hehe ich würde mich zwar nichtmehr als Anfänger bezeichnen aber zwischen Anfänger und Profi liegt ja bekanntlich ein ein weiter Grad. Duck
Genauer gesagt ist dieser Chat mein erster Versuch in Richtung Netzwerk in Sachen Delphi.

Deswegen wäre ich dir echt dankbar wenn du mir deinen Vorschlag ein bisschen erläutern könntest.

Zu den Anzahl der Clients: Das wäre erstmal nur Nebensache, viel wichtiger ist mir, dass der Suchprozess erfolgreich abläuft.

mfg
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
Cyf #4|Beitrag #911591Verfasst am: 02.07.2008, 22:17      Titel: Re: TClientSocket - Netzwerk nach Servern durchsuchen Antworten mit Zitat
aktives Mitglied
Alter: 19
Status: offline
Beiträge: 107
angemeldet: 30.05.2008
Turbo Delphi für Win32

Zu der Sache mit dem Server suchen: Am besten du schaust wie gesagt mal nach Broadcast bzw. Methoden Anfragen an mehr als einen Addressaten zu schicken.

Zu der Sache mit wieviele Clients ein Server hat: Bau in deinen Server eine Variable ein, die festhällt wie viele Clients bei ihm im momentan angemeldet sind, je nach benutzeter Komponente, ist die in der Regel sogar schon automatisch vorhanden. Wenn dein Server vom Client einen bestimmten Statuscode oder String erhällt, sendest du die Anzahl der Clients an den abrufenden CLient, wie genau du das anstellst, ist deine Sache, am besten ist, du baust dir ne extra Unit (oder eine .dll) nur mit dem Protokoll und verwendest, dass dann bei Client und Server.

Zu der Sache mit der IP: Eine IP besteht aus 4 Byte, ein unsigned Byte kann Werte von 0 bis 255 annehmen. Somit ergibt sich folgender Aufbau einer IP: Byte1.Byte2.Byte3.Byte4, z.B 127.000.000.001 (localhost). Es dürfte einfahcer sein, die einzelnen Bytes zu inkrementieren als das ganze als String zu handeln. Zu beachten ist dann aber auch, dass man sich eine Funktion dazu bauen sollte, die aus dem ganzen wieder einen String bauen kann, da viele Funktionen die IP als String verlangen. Eine Klasse dazu könnte so aussehen (nur als Beispiel gedacht, auch wenn man das vielleicht besser als record macht):

Delphi-Quellcode: zusammenfalten | markieren
TMyIP = class(TObjekt)
  public
    Byte1: Byte;
    Byte2: Byte;
    Byte3: Byte;
    Byte4: Byte;
    function getIPString: string;
  end;

TMyIP.getIPString: string;
begin
  Result:= IntToStr(Byte1)+'.'+IntToStr(Byte2)+'.'+IntToStr(Byte3)+'.'+IntToStr(Byte4);
end;


[Edit] Delphi-Tag hinzugefügt

 Zuletzt bearbeitet von Cyf am 02.07.2008, 22:18, insgesamt 1-mal bearbeitet.
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
Anzeige-Optionen:    
 
Delphi-PRAXiS Forum - Übersicht -> Internet / LAN / ASP.NET Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1   [ 4 Beiträge ]  
 
  Neuen Beitrag schreiben Auf Beitrag antworten
als PDF-Datei herunterladenThema ausdrucken
 
   
Gehe zu:  
Du darfst keine Beiträge in dieses Forum schreiben.
Du darfst auf Beiträge in diesem Forum nicht antworten.
Du darfst Deine Beiträge in diesem Forum nicht bearbeiten.
Du darfst Deine Beiträge in diesem Forum nicht löschen.
Du darfst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten.
Du kannst Dateien in diesem Forum nicht herunterladen.


Impressum / Kontakt
Allgemeine Geschäftsbedingungen
Verhaltenskodex & FAQ

Delphi-PRAXiS :: Das Forum für Delphi-Programmierer
Das Experten Forum für Delphi ProgrammiererHilfe für Borland Delphi gibts es hier im ForumDelphi Quelltexte und Source CodesDelphi-PRAXiS :: Das Forum für DelphiWindows APIInternet und NetzwerkeVCL und Datenbanken
 

Delphi-PRAXiS V.2005 III
© 2002-2008 by Daniel R. Wolf
powered by phpBB © phpBB Group

Impressum / Kontakt Allgemeine Geschäftsbedingungen