Delphi-PRAXiS
Seite 2 von 2     12   

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)

DymonD 12. Mai 2004 13:11

Re: Nachricht vom Server an alle Clienten schicken
 
ja das TForm1... brauche ich, da sitzen ja TTcpServer und TTcpClient... ich hatte da ja ein beispielprog und der hatte auch ein Memo1.Text also muss es ja gehen...

aber was is mit UDP..?

DymonD

hibbert 12. Mai 2004 13:22

Re: Nachricht vom Server an alle Clienten schicken
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
also ich habe mal ein kleines Beispiel mit Delphi 7 vorbereitet...

DymonD 12. Mai 2004 14:24

Re: Nachricht vom Server an alle Clienten schicken
 
hi,

nice nice... bloß dass er nix macht ^^

aber ich peil udp ned und es geht auch ned... aud außerdem soll das nicht im netzwerk sein sondern im inet, der soll das an alle aktive verbindungen senden..

wieso geht das bei mir ned??
Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
begin
  //-----------  Den Mist senden --------------
  // hier stehen die senden-komponente
  Form1.TcpClient1.Sendln('DymonD sagt:'+Memo2.Text);
  Form2.Memo2.Text := '';
  //-----------  und beim Senden auch lesen ---
  Form2.Memo1.Lines.Add(Form1.TcpServer1.Receiveln);
end;
oder soll ich das anders schreiben:

Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
begin
  //-----------  Den Mist senden --------------
  // hier stehen die senden-komponente
  Form1.TcpClient1.Sendln('DymonD sagt:'+Memo2.Text);
  Form2.Memo2.Text := '';
  //-----------  und beim Senden auch lesen ---
  Form2.Memo1.Lines.Add(Form1.TcpClient1.Receiveln);
end;
erst wenns funzt wird der code eingebaut damit der server den string an alle clients sendet

DymonD

hibbert 12. Mai 2004 15:22

Re: Nachricht vom Server an alle Clienten schicken
 
Ahso, du willst das Über das Inet machen....

nadann hilft die ip 255.255.255.255 auch nicht weiter.

Da musst du dann die direkte IP Adresse des anderen Users eingeben. Aber das versenden über Internet mit den UPD Komonenten funzen auch ganz einfach, ich habe damit sogar mein eigene ICQ programmiert !!

DymonD 12. Mai 2004 20:30

Re: Nachricht vom Server an alle Clienten schicken
 
hi...

Also muss ich doch die Indy UDP Komponente benutzen...?
Aber wie empfange ich den text, der liest ihn ja nicht...?
:wall:

dymond

ps: beim ersten senden sendet er das und empfängt sogar, wieso macht er es nicht beim 2. mal (dann hängt er...)?

Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
begin
  //-----------  Den Mist senden --------------
  // hier stehen die senden-komponente
  Form1.IdUDPClient1.Send('DymonD sagt: '+Memo2.Text);
  Form2.Memo2.Text := '';
  Form2.Memo1.Lines.Add(Form1.IdUDPServer1.ReceiveString);
end;

hibbert 12. Mai 2004 21:14

Re: Nachricht vom Server an alle Clienten schicken
 
schau dir mal mein beispiel an, da ist alles drin....

hibbert

DymonD 12. Mai 2004 21:17

Re: Nachricht vom Server an alle Clienten schicken
 
dein beispiel funzt ned
DymonD

alcaeus 13. Mai 2004 05:02

Re: Nachricht vom Server an alle Clienten schicken
 
Erstens: Du kannst sowohl UDP- als auch TCP-Komponenten verwenden. Der Unterschied besteht nur im verwendeten Transportprotokoll.
Zweitens: Sag bitte genau was bei deinem Code nicht funktioniert? Compiliert er nicht, kommt ein Fehler beim Senden, Passiert gar nichts...?

DymonD 13. Mai 2004 14:36

Re: Nachricht vom Server an alle Clienten schicken
 
hi,

geh ma da drauf, da habe ich die frage als ein neues thema gepostet..

http://www.delphipraxis.net/internal...=173909#173909

so und nun der Quellcode: server starten geht, nachricht senden ned...

Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
begin
  //-----------  Den Mist senden --------------
  // hier stehen die senden-komponente
  Form1.IdUDPClient1.Send('DymonD sagt: '+Memo2.Text);
  Form2.Memo2.Text := '';
end;
ich benutze UDP weil es einfacher geht.. ich habe es mit tcp/ip versucht aber es geht ned... vielleicht mache ich was falsch..?

Delphi-Quellcode:
Form1.TcpClient1.Sendln('DymonD sagt: '+Memo2.Text);
Form2.Memo2 := '';
und empfangen mit tcp...
in Form1:
Delphi-Quellcode:
Form1.TcpServer1.OnReceive := Form2.JaDannLiesMal(Sender);
in Form2:
Delphi-Quellcode:
procedure TForm2.JaDannLiesMal(Sender: TObject);
begin
  // so und nun empfangen...
  Form2.Memo1.Lines.Add(Form1.TcpServer1.Receiveln);
end;
dymond

Bowler 6. Jul 2004 20:54

Re: Nachricht vom Server an alle Clienten schicken
 
Ist zwar schon etwas her, dass das Problem/der Fehler hier diskutiert wurde, aber ich denke, es ist ganz interessant.

Ich habe gerade mit Hilfe dieses Thread erfolgreich eine UDP C/S-Umgebung gestrickt, und bin auch über den Fehler mit dem Datentyp TIdSocketHandle gestolpert. Ich habe es auch mit der Typendeklaration probiert.

Das funktioniert auch soweit ganz gut, aber man kann so nicht auf die Eigenschaften der Klasse zugreifen.
Der Parameter ABinding in UDPRead ist quasi unwichtig, aber hinter ihm verbergen sich ganz interessante Eigenschaften (PeerIP, etc).

Ich habe einfach in die Uses-Klausel die Unit IdSocketHandle aufgenommen, und die Typendeklaration wieder gelöscht. Da konnte ich das auch kompilieren. Der besagte Datentyp wird in dieser Unit deklariert, sie wird nur nicht automatisch in die Klausel aufgenommen, und muss manuell hinzugefügt werden.

Hoffe es hilft... :-D

Gruß
Christan

hibbert 6. Jul 2004 21:37

Re: Nachricht vom Server an alle Clienten schicken
 
Hi,
das heißt dass ich
Delphi-Quellcode:
type TIdSocketHandle = THandle;
einfach weglassen kann und einfach folgendes verwenden sollte:
Delphi-Quellcode:
implementation
uses IdSocketHandle;
{$R *.dfm}
:?: :?: :?:

Bowler 6. Jul 2004 21:58

Re: Nachricht vom Server an alle Clienten schicken
 
Stellenweise richtig. :-D
Du kannst

Delphi-Quellcode:
type TIdSocketHandle = THandle;
weglassen. Aber die IdSocketHandle-Unit musst Du im Interface-Teil schon einbinden, da der Typ bereits in der Klassendefinition verwendet wird. Bei mir sieht das ganze so aus:

Delphi-Quellcode:
unit Unit1;

interface

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



type
  TForm1 = class(TForm)
    client: TIdUDPClient;
    server: TIdUDPServer;
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure serverUDPRead(Sender: TObject; AData: TStream;
      ABinding: TIdSocketHandle);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

//usw.
Dann sollte es funtzen.

Gruß
Christian

hibbert 7. Jul 2004 14:08

Re: Nachricht vom Server an alle Clienten schicken
 
jo so kann man es auch machen, bei mir funzt es so auch :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:01 Uhr.
Seite 2 von 2     12   

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