Delphi-PRAXiS
Seite 2 von 6     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Nachricht vom Server an alle Clienten schicken (https://www.delphipraxis.net/13952-nachricht-vom-server-alle-clienten-schicken.html)

SleepyMaster 29. Dez 2003 21:04

Re: Nachricht vom Server an alle Clienten schicken
 
Indy UDPClient (TIdUDPClient)
Indy UDPServer (TIdUDPServer)

Und bei dem UDPClient Broadcasting auf true setzen!

hibbert 29. Dez 2003 21:06

Re: Nachricht vom Server an alle Clienten schicken
 
ok, danke für eure hilfe, ich werde mich mal gleich ranmachen.
wenn ich noch fargen habe, dann melde ich mich in den nächsten tagen nochmal.

danke nochmal für eure hilfe.

hibbert

SleepyMaster 29. Dez 2003 21:08

Re: Nachricht vom Server an alle Clienten schicken
 
Delphi-Quellcode:
IdUDPClient1.Send('255.255.255.255',Portnummer,Text);
und zum empfangen

Delphi-Quellcode:
procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
  ABinding: TIdSocketHandle);
var
  x:string;
begin
AData.Position:=0;
SetLength(x,AData.Size);
AData.ReadBuffer(x[1],AData.Size);
//in x steht jetzt dem empfangene Text
end;

hibbert 29. Dez 2003 21:32

Re: Nachricht vom Server an alle Clienten schicken
 
ok, nun geht es los mit meinen Fragen:
(ich benutze nun die Kompos Indy UDPClient (TIdUDPClient) & Indy UDPServer (TIdUDPServer) )
  • Welche Bindings muss ich beim Server eintragen ?
  • Welchen host muss ich beim Clienten eintragen ?
  • Der Prot ist doch egal, hauptsache der gleiche, oder ?
  • Was sollte ich noch beachten ?
  • Und warum kommt diese Fehlermeldung:
Zitat:

Zitat von Compiler
[Fehler] Unit1.pas(19): Undefinierter Bezeichner: 'TIdSocketHandle'

Ich habe ein edit Feld, einen Button und den server sowie den Clienten drauf.
(oder darf ich nur den server oder nur den Clienten benutzen, geht beides zusammen überhaupt?)
Code:
Im Button ist folgender Quelltext:
procedure TForm1.Button1Click(Sender: TObject);
begin
IdUDPClient1.Send('255.255.255.255',32,edit1.Text);
end;
Und dann habe ich noch dieses hier:
Code:
procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
  ABinding: TIdSocketHandle);
var x:string;
begin
AData.Position:=0;
SetLength(x,AData.Size);
AData.ReadBuffer(x[1],AData.Size);
memo1.Lines.Add(x)
end;
Was habe ich falsch gemacht ?

thx hibbert

SleepyMaster 29. Dez 2003 21:58

Re: Nachricht vom Server an alle Clienten schicken
 
Zitat:

Welche Bindings muss ich beim Server eintragen ?
-Keine Bindings
Zitat:

Welchen host muss ich beim Clienten eintragen ?
-Keinen (Alle Nachrichten werden an alle PCs im Netzwerk gesendet)
Zitat:

Der Prot ist doch egal, hauptsache der gleiche, oder ?
-Jepp
Zitat:

Was sollte ich noch beachten ?
-KA
Zitat:

Und warum kommt diese Fehlermeldung:
-Den Fehler hab ich auch! Habs so gelöst:
Delphi-Quellcode:
type
  TIdSocketHandle = THandle;
Zitat:

(oder darf ich nur den server oder nur den Clienten benutzen, geht beides zusammen überhaupt?)
-MUSST beide nehmen (Client zum senden/Server zum empfangen)
Zitat:

Was habe ich falsch gemacht ?
-Garnix. Wenn BroadcastEnabeld = true ist und der Serverport auch 32 ist.
(glaub ich mal)

hibbert 29. Dez 2003 22:08

Re: Nachricht vom Server an alle Clienten schicken
 
schön dass du auch den gelcihen fehler hattest :wink:
doch wo hast du das Type eingefügt? etwas so:
unit Unit1;

Delphi-Quellcode:
interface

uses
  ...
type
  TForm1 = class(TForm)
    IdUDPClient1: TIdUDPClient;
    IdUDPServer1: TIdUDPServer;
    Button1: TButton;
    Edit1: TEdit;
    Memo1: TMemo;
    TIdSocketHandle = THandle;
    procedure Button1Click(Sender: TObject);
    procedure IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
      ABinding: TIdSocketHandle);
...
thx hibbert

SleepyMaster 29. Dez 2003 22:12

Re: Nachricht vom Server an alle Clienten schicken
 
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdUDPServer, IdBaseComponent, IdComponent, IdUDPBase,
  IdUDPClient, XPMan;

type                         //<<<<<<<<<<<<<<<<<<
  TIdSocketHandle = THandle; //<<<<<<<<<<<<<<<<<<

type
  TForm1 = class(TForm)
    IdUDPClient1: TIdUDPClient;
    IdUDPServer1: TIdUDPServer;
    Button1: TButton;
    Edit1: TEdit;
    Memo1: TMemo;
    XPManifest1: TXPManifest;
    procedure IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
      ABinding: TIdSocketHandle);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

SleepyMaster 29. Dez 2003 22:14

Re: Nachricht vom Server an alle Clienten schicken
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hab mal en kleines Beispiel angehangen

hibbert 29. Dez 2003 23:48

Re: Nachricht vom Server an alle Clienten schicken
 
ach da oben kam das hin :shock:
na dann ist ja der rest auch klar :lol:

Danke für deine bzw. eure Hilfe.

Aber eine Frage habe ich da noch: warum wird der eingegebene Text 3 mal in das memo geschrieben?

(zum Zeitpunkt meines Tests war kein weitere Rechner im Netzwerk online)

thx hibbert

SleepyMaster 30. Dez 2003 10:44

Re: Nachricht vom Server an alle Clienten schicken
 
Also ich hab kein Problem damit! (Bekomme ihn immer nur einmal)
Wieviele Netzwerkkarten hast du denn in deinem PC???

Und was passiert wenn du es noch auf einem anderen PC laufen lässt???
Bekommt der dann auch alle Nachrichten 3x???


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:07 Uhr.
Seite 2 von 6     12 34     Letzte »    

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