Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Server und Client (https://www.delphipraxis.net/69215-server-und-client.html)

Chippie82 11. Mai 2006 20:32


Server und Client
 
Hallo Leute, ich habe folgendes Problem ich habe einen Server und einen Clienten erstellt vom Clienten zum Server kann ich einen Text verschicken, wenn ich dies umgekehrt machen möchte, bekomme ich eine Fehlermeldung. Woran liegt das?


Hier der Quelltext:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, ScktComp, StdCtrls, ComCtrls;

type
  TIP = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    ClientVerbinden: TButton;
    ClientTrennen: TButton;
    ServerVerbinden: TButton;
    ServerTrennen: TButton;
    ClientSocket1: TClientSocket;
    ServerSocket1: TServerSocket;
    Beenden: TButton;
    StatusBar1: TStatusBar;
    ClientSenden: TButton;
    ServerSenden: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Memo1: TMemo;
    Memo2: TMemo;
    procedure ClientVerbindenClick(Sender: TObject);
    procedure ServerVerbindenClick(Sender: TObject);
    procedure BeendenClick(Sender: TObject);
    procedure ClientTrennenClick(Sender: TObject);
    procedure ServerTrennenClick(Sender: TObject);
    procedure ClientSocket1Disconnect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket;
      ErrorEvent: TErrorEvent; var ErrorCode: Integer);
    procedure ClientSocket1Connect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ClientSendenClick(Sender: TObject);
    procedure ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ServerSendenClick(Sender: TObject);
    procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
IP:TIP;

implementation

{$R *.DFM}

procedure TIP.ClientVerbindenClick(Sender: TObject); //Verbindung des Clienten
 begin
  clientsocket1.active:=true; //Verbindung wird aktiviert
 end;

procedure TIP.ServerVerbindenClick(Sender: TObject); //Verbindung des Servers
 begin
 serversocket1.active:=true; //Verbindung wird aktiviert
 end;

procedure TIP.BeendenClick(Sender: TObject);
 begin
  close; //Programm wird beendet
 end;

procedure TIP.ClientTrennenClick(Sender: TObject);
 begin
  clientsocket1.active:=false; //Client wird getrennt
 end;

procedure TIP.ServerTrennenClick(Sender: TObject);
 begin
  serversocket1.active:=false; //Server wird getrennt
 end;

procedure TIP.ClientSocket1Disconnect(Sender: TObject;
  Socket: TCustomWinSocket);
 begin
  statusbar1.simpletext:='Verbindung wurde getrennt'; //Statusanzeige
 end;

procedure TIP.ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket;
  ErrorEvent: TErrorEvent;
  var ErrorCode: Integer);
   begin
    statusbar1.simpletext:='Error. Verbindung wird getrennt!'; //Statusanzeige
    clientsocket1.Active:=false; //Bei Fehler wird Verbindung getrennt
  end;

procedure TIP.ClientSocket1Connect(Sender: TObject;
  Socket: TCustomWinSocket);
 begin
  statusbar1.simpletext:='Verbunden'; //Statusanzeige
 end;


procedure TIP.ClientSendenClick(Sender: TObject);
 begin
  clientsocket1.socket.sendtext(edit1.text);
end;

procedure TIP.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
  var
  empfang:string;
   begin
    empfang:=socket.receivetext;
    memo2.lines.add(empfang);
end;

procedure TIP.ServerSendenClick(Sender: TObject);
 begin
 serversocket1.socket.sendtext(Edit2.text);
end;

procedure TIP.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
 var
 empfang2:string;
  begin
   empfang2:=socket.receivetext;
   memo1.lines.add(empfang2);
end;

end.

Ich hoffe ihr könnt mir einen Tip geben oder mir weiterhelfen?


Gruß

Chippie

Chippie82 11. Mai 2006 20:35

Re: Server und Client
 
Hier ist noch die Fehlermeldung:
Zitat:

Im Projekt Project1.exe ist eine Exception der Klasse ESocketError aufgetreten. Meldung:
'Windows-Socket-Fehler: Eine Anforderung zum Senden oder Empfangen von Daten wurde verhindert, da der Socket nicht verbunden ist und (beim Senden über einen Datagrammsocket mit einem sendto-Aufruf) keine Adresse angegeben wurde (10057), auf API'send". Prozeß wurde angehalten. Mit einzelne Anweisung oder Start fortsetzen.

Chippie

pacman1986 11. Mai 2006 20:40

Re: Server und Client
 
du musst an die einzelnen clients schicken bei serversocket gibt es keinen allgemeinen aufruf glaub ich.

Delphi-Quellcode:
Serversocket1.Socket.Connections[0].Sendtext(text);
sollte der richtige aufruf sein

Edit : Connections nicht Connection

Chippie82 11. Mai 2006 20:51

Re: Server und Client
 
Wenn ich dort dann Connection eintrage, bekomme ich die Fehlermeldung Connection sei nicht definiert, weiß aber auch nicht als was ich das deklarieren muss, wenn man das überhaupt muss?


Gruß

Chippie

Chippie82 11. Mai 2006 20:56

Re: Server und Client
 
Ups, blöder Fehler hab ein s bei Connection vergessen. Dann geht es, Danke.

Vielen Dank nochmal.


Gruß


Chippie


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