AGB  ·  Datenschutz  ·  Impressum  







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

Server Suche mit Sockets

Ein Thema von mdogg · begonnen am 8. Okt 2007 · letzter Beitrag vom 8. Okt 2007
 
mdogg

Registriert seit: 8. Okt 2007
13 Beiträge
 
#1

Server Suche mit Sockets

  Alt 8. Okt 2007, 19:46
Hi
erstmal vorne weg, ich benutze Delphi 6.


Ich möchte für meinen Chat die Möglichkeit programmieren den Server automatisch anhand einer IP-Range zu finden.
Ich habe zum testen jeweils einen simplen Server und einen simplen Client geschrieben.

Anhand der Suche habe ich einige Ansätze gefunden und diese kombiniert.
Wenn ich die Suche mit den gegebenen Parametern starte erscheint im Memo jeweils ein 'Trying : 192.168.0.X'
und danach 255 mal '192.168.0.254 failed because 10049'

Kann mir jemand einen Tip geben?

Hier die Quell Codes:

Server
Code:
unit test_server;

interface

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

type
  TForm1 = class(TForm)
    ServerSocket1: TServerSocket;
    Edit1: TEdit;
    SpinEdit1: TSpinEdit;
    Button1: TButton;
    procedure ServerSocket1ClientConnect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  showMessage('client connected @ '+ServerSocket1.Socket.RemoteAddress);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 ServerSocket1.Port := SpinEdit1.Value;
 ServerSocket1.Open;
end;

end.

Client
Code:
unit test_client;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    ClientSocket1: TClientSocket;
    SpinEdit5: TSpinEdit;
    Memo1: TMemo;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    Edit8: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure ClientSocket1Connect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket;
      ErrorEvent: TErrorEvent; var ErrorCode: Integer);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  ip: string;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
const Point = '.';
var
ip_1a,ip_1b,ip_2a,ip_2b,ip_3a,ip_3b,ip_4a,ip_4b: integer;
begin
ClientSocket1.Port := SpinEdit5.Value;
ip_1b := StrToInt(Edit5.Text);
ip_2b := StrToInt(Edit6.Text);
ip_3b := StrToInt(Edit7.Text);
ip_4b := StrToInt(Edit8.Text);
 for ip_1a := StrToInt(Edit1.Text) to ip_1b do begin
  for ip_2a := StrToInt(Edit2.Text) to ip_2b do begin
   for ip_3a := StrToInt(Edit3.Text) to ip_3b do begin
    for ip_4a := StrToInt(Edit4.Text) to ip_4b do begin
     ip := IntToStr(ip_1a)+point+IntToStr(ip_2a)+point+IntToStr(ip_3a)+point+IntToStr(ip_4a);
     try
      Memo1.Lines.Add('Trying: '+ip);
      ClientSocket1.Host := ip;
      ClientSocket1.Open;
     except
      Memo1.Lines.Add(ip+' failed');
      ClientSocket1.Close;
      end;
     end;
    end;
   end;
  end;
 end;

procedure TForm1.ClientSocket1Connect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  break;
  showMessage(ip+'was successfull');
end;

procedure TForm1.ClientSocket1Error(Sender: TObject;
  Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
  var ErrorCode: Integer);
begin
  Memo1.Lines.Add(ip+' failed because: '+IntToStr(ErrorCode));
  ErrorCode := 0;
end;

end.


Auch sehr interessant:
Das 'break;' im Connect Event konnte ich auf einem Rechner kompilieren, aber auf dem Rechner daneben nicht...
Beide beuntzen die gleiche Delphi Version...

Danke schon mal.
  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 13:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz