AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Client und Socket / Datenversand bzw. Empfangen
Thema durchsuchen
Ansicht
Themen-Optionen

Client und Socket / Datenversand bzw. Empfangen

Ein Thema von Chippie82 · begonnen am 7. Apr 2006 · letzter Beitrag vom 9. Apr 2006
 
Chippie82

Registriert seit: 6. Okt 2005
Ort: Schwelm
20 Beiträge
 
#8

Re: Client und Socket / Datenversand bzw. Empfangen

  Alt 9. Apr 2006, 16:07
Vom Clienten zum Server klappt die Sache, mit folgendem 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;
    PortClient: TEdit;
    Label3: TLabel;
    IP: TEdit;
    Label4: TLabel;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    CheckBox3: TCheckBox;
    CheckBox4: TCheckBox;
    CheckBox5: TCheckBox;
    CheckBox6: TCheckBox;
    CheckBox7: TCheckBox;
    CheckBox8: TCheckBox;
    ClientSocket1: TClientSocket;
    ServerSocket1: TServerSocket;
    Timer1: TTimer;
    PortServer: TEdit;
    Label5: TLabel;
    Beenden: TButton;
    StatusBar1: TStatusBar;
    Label6: TLabel;
    CheckBox9: TCheckBox;
    CheckBox10: TCheckBox;
    CheckBox11: TCheckBox;
    CheckBox12: TCheckBox;
    CheckBox13: TCheckBox;
    CheckBox14: TCheckBox;
    CheckBox15: TCheckBox;
    CheckBox16: TCheckBox;
    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 ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure CheckBox1Click(Sender: TObject);
    procedure CheckBox2Click(Sender: TObject);
    procedure CheckBox3Click(Sender: TObject);
    procedure CheckBox4Click(Sender: TObject);
    procedure CheckBox5Click(Sender: TObject);
    procedure CheckBox6Click(Sender: TObject);
    procedure CheckBox7Click(Sender: TObject);
    procedure CheckBox8Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  IP: TIP;

implementation

{$R *.DFM}

procedure TIP.ClientVerbindenClick(Sender: TObject);
 begin
  clientsocket1.address:= IP.text;
  clientsocket1.port:= strtoint(PortClient.text);
  clientsocket1.active:=true;
 end;

procedure TIP.ServerVerbindenClick(Sender: TObject);
 begin
  serversocket1.port:= strtoint(PortServer.text);
  serversocket1.active:=true;
 end;

procedure TIP.BeendenClick(Sender: TObject);
 begin
  close;
 end;

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

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

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

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

procedure TIP.ClientSocket1Connect(Sender: TObject;
  Socket: TCustomWinSocket);
 begin
  statusbar1.simpletext:='Verbunden mit IP ' +IP.text+ ' und Port ' + PortClient.text;
 end;

procedure TIP.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
 var text:String;
  begin
   text := Socket.ReceiveText;
    if text[1] = '1then
    if text[2] = 'tthen checkbox9.checked := true else checkbox9.checked := false;
    if text[1] = '2then
    if text[2] = 'tthen checkbox10.checked := true else checkbox10.checked := false;
    if text[1] = '3then
    if text[2] = 'tthen checkbox11.checked := true else checkbox11.checked := false;
    if text[1] = '4then
    if text[2] = 'tthen checkbox12.checked := true else checkbox12.checked := false;
    if text[1] = '5then
    if text[2] = 'tthen checkbox13.checked := true else checkbox13.checked := false;
    if text[1] = '6then
    if text[2] = 'tthen checkbox14.checked := true else checkbox14.checked := false;
    if text[1] = '7then
    if text[2] = 'tthen checkbox15.checked := true else checkbox15.checked := false;
    if text[1] = '8then
    if text[2] = 'tthen checkbox16.checked := true else checkbox16.checked := false;
    end;

procedure TIP.CheckBox1Click(Sender: TObject);
begin
 If Checkbox1.checked then Clientsocket1.socket.sendtext('1t') else Clientsocket1.socket.sendtext('1f');
end;

procedure TIP.CheckBox2Click(Sender: TObject);
 begin
  If Checkbox2.checked then Clientsocket1.socket.sendtext('2t') else Clientsocket1.socket.sendtext('2f');
 end;

procedure TIP.CheckBox3Click(Sender: TObject);
 begin
  If Checkbox3.checked then Clientsocket1.socket.sendtext('3t') else Clientsocket1.socket.sendtext('3f');
 end;

procedure TIP.CheckBox4Click(Sender: TObject);
 begin
  If Checkbox4.checked then Clientsocket1.socket.sendtext('4t') else Clientsocket1.socket.sendtext('4f');
 end;

procedure TIP.CheckBox5Click(Sender: TObject);
 begin
  If Checkbox5.checked then Clientsocket1.socket.sendtext('5t') else Clientsocket1.socket.sendtext('5f');
 end;

procedure TIP.CheckBox6Click(Sender: TObject);
 begin
  If Checkbox6.checked then Clientsocket1.socket.sendtext('6t') else Clientsocket1.socket.sendtext('6f');
 end;

procedure TIP.CheckBox7Click(Sender: TObject);
 begin
  If Checkbox7.checked then Clientsocket1.socket.sendtext('7t') else Clientsocket1.socket.sendtext('7f');
 end;

procedure TIP.CheckBox8Click(Sender: TObject);
 begin
  If Checkbox8.checked then Clientsocket1.socket.sendtext('8t') else Clientsocket1.socket.sendtext('8f');
 end;

end.
Aber wenn ich das jetzt umgekehrt machen möchte die Checkboxen beim Server anklicken und beim Clienten sollen sie ausgehen, dann bekomme ich folgende Fehlermeldung:

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.


Hier ist der Quelltext dazu:

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;
    PortClient: TEdit;
    Label3: TLabel;
    IP: TEdit;
    Label4: TLabel;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    CheckBox3: TCheckBox;
    CheckBox4: TCheckBox;
    CheckBox5: TCheckBox;
    CheckBox6: TCheckBox;
    CheckBox7: TCheckBox;
    CheckBox8: TCheckBox;
    ClientSocket1: TClientSocket;
    ServerSocket1: TServerSocket;
    Timer1: TTimer;
    PortServer: TEdit;
    Label5: TLabel;
    Beenden: TButton;
    StatusBar1: TStatusBar;
    Label6: TLabel;
    CheckBox9: TCheckBox;
    CheckBox10: TCheckBox;
    CheckBox11: TCheckBox;
    CheckBox12: TCheckBox;
    CheckBox13: TCheckBox;
    CheckBox14: TCheckBox;
    CheckBox15: TCheckBox;
    CheckBox16: TCheckBox;
    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 ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure CheckBox1Click(Sender: TObject);
    procedure CheckBox2Click(Sender: TObject);
    procedure CheckBox3Click(Sender: TObject);
    procedure CheckBox4Click(Sender: TObject);
    procedure CheckBox5Click(Sender: TObject);
    procedure CheckBox6Click(Sender: TObject);
    procedure CheckBox7Click(Sender: TObject);
    procedure CheckBox8Click(Sender: TObject);
    procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
    procedure CheckBox9Click(Sender: TObject);
    procedure CheckBox10Click(Sender: TObject);
    procedure CheckBox11Click(Sender: TObject);
    procedure CheckBox12Click(Sender: TObject);
    procedure CheckBox13Click(Sender: TObject);
    procedure CheckBox14Click(Sender: TObject);
    procedure CheckBox15Click(Sender: TObject);
    procedure CheckBox16Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  IP: TIP;

implementation

{$R *.DFM}

procedure TIP.ClientVerbindenClick(Sender: TObject);
 begin
  clientsocket1.address:= IP.text;
  clientsocket1.port:= strtoint(PortClient.text);
  clientsocket1.active:=true;
 end;

procedure TIP.ServerVerbindenClick(Sender: TObject);
 begin
  serversocket1.port:= strtoint(PortServer.text);
  serversocket1.active:=true;
 end;

procedure TIP.BeendenClick(Sender: TObject);
 begin
  close;
 end;

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

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

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

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

procedure TIP.ClientSocket1Connect(Sender: TObject;
  Socket: TCustomWinSocket);
 begin
  statusbar1.simpletext:='Verbunden mit IP ' +IP.text+ ' und Port ' + PortClient.text;
 end;

procedure TIP.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
 var text:String;
  begin
   text := Socket.ReceiveText;
    if text[1] = '1then
    if text[2] = 'tthen checkbox9.checked := true else checkbox9.checked := false;
    if text[1] = '2then
    if text[2] = 'tthen checkbox10.checked := true else checkbox10.checked := false;
    if text[1] = '3then
    if text[2] = 'tthen checkbox11.checked := true else checkbox11.checked := false;
    if text[1] = '4then
    if text[2] = 'tthen checkbox12.checked := true else checkbox12.checked := false;
    if text[1] = '5then
    if text[2] = 'tthen checkbox13.checked := true else checkbox13.checked := false;
    if text[1] = '6then
    if text[2] = 'tthen checkbox14.checked := true else checkbox14.checked := false;
    if text[1] = '7then
    if text[2] = 'tthen checkbox15.checked := true else checkbox15.checked := false;
    if text[1] = '8then
    if text[2] = 'tthen checkbox16.checked := true else checkbox16.checked := false;
    end;

procedure TIP.CheckBox1Click(Sender: TObject);
begin
 If Checkbox1.checked then Clientsocket1.socket.sendtext('1t') else Clientsocket1.socket.sendtext('1f');
end;

procedure TIP.CheckBox2Click(Sender: TObject);
 begin
  If Checkbox2.checked then Clientsocket1.socket.sendtext('2t') else Clientsocket1.socket.sendtext('2f');
 end;

procedure TIP.CheckBox3Click(Sender: TObject);
 begin
  If Checkbox3.checked then Clientsocket1.socket.sendtext('3t') else Clientsocket1.socket.sendtext('3f');
 end;

procedure TIP.CheckBox4Click(Sender: TObject);
 begin
  If Checkbox4.checked then Clientsocket1.socket.sendtext('4t') else Clientsocket1.socket.sendtext('4f');
 end;

procedure TIP.CheckBox5Click(Sender: TObject);
 begin
  If Checkbox5.checked then Clientsocket1.socket.sendtext('5t') else Clientsocket1.socket.sendtext('5f');
 end;

procedure TIP.CheckBox6Click(Sender: TObject);
 begin
  If Checkbox6.checked then Clientsocket1.socket.sendtext('6t') else Clientsocket1.socket.sendtext('6f');
 end;

procedure TIP.CheckBox7Click(Sender: TObject);
 begin
  If Checkbox7.checked then Clientsocket1.socket.sendtext('7t') else Clientsocket1.socket.sendtext('7f');
 end;

procedure TIP.CheckBox8Click(Sender: TObject);
 begin
  If Checkbox8.checked then Clientsocket1.socket.sendtext('8t') else Clientsocket1.socket.sendtext('8f');
 end;

procedure TIP.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
 var text:String;
  begin
   text := Socket.ReceiveText;
    if text[1] = '9then
    if text[2] = 'tthen checkbox1.checked := true else checkbox1.checked := false;
    if text[1] = '10then
    if text[2] = 'tthen checkbox2.checked := true else checkbox2.checked := false;
    if text[1] = '11then
    if text[2] = 'tthen checkbox3.checked := true else checkbox3.checked := false;
    if text[1] = '12then
    if text[2] = 'tthen checkbox4.checked := true else checkbox4.checked := false;
    if text[1] = '13then
    if text[2] = 'tthen checkbox5.checked := true else checkbox5.checked := false;
    if text[1] = '14then
    if text[2] = 'tthen checkbox6.checked := true else checkbox6.checked := false;
    if text[1] = '15then
    if text[2] = 'tthen checkbox7.checked := true else checkbox7.checked := false;
    if text[1] = '16then
    if text[2] = 'tthen checkbox8.checked := true else checkbox8.checked := false;

 end;

procedure TIP.CheckBox9Click(Sender: TObject);
 begin
  If Checkbox9.checked then Serversocket1.socket.sendtext('9t') else Serversocket1.socket.Connections[0].sendtext('9f');
 end;

procedure TIP.CheckBox10Click(Sender: TObject);
 begin
  If Checkbox10.checked then Serversocket1.socket.sendtext('10t') else Serversocket1.socket.Connections[0].sendtext('10f');
 end;

procedure TIP.CheckBox11Click(Sender: TObject);
 begin
  If Checkbox11.checked then Serversocket1.socket.sendtext('11t') else Serversocket1.socket.Connections[0].sendtext('11f');
 end;

procedure TIP.CheckBox12Click(Sender: TObject);
 begin
  If Checkbox12.checked then Serversocket1.socket.sendtext('12t') else Serversocket1.socket.Connections[0].sendtext('12f');
 end;

procedure TIP.CheckBox13Click(Sender: TObject);
 begin
  If Checkbox13.checked then Serversocket1.socket.sendtext('13t') else Serversocket1.socket.Connections[0].sendtext('13f');
 end;

procedure TIP.CheckBox14Click(Sender: TObject);
 begin
  If Checkbox14.checked then Serversocket1.socket.sendtext('14t') else Serversocket1.socket.Connections[0].sendtext('14f');
 end;

procedure TIP.CheckBox15Click(Sender: TObject);
 begin
  If Checkbox15.checked then Serversocket1.socket.sendtext('15t') else Serversocket1.socket.Connections[0].sendtext('15f');
 end;

procedure TIP.CheckBox16Click(Sender: TObject);
 begin
  If Checkbox16.checked then Serversocket1.socket.sendtext('1t') else Serversocket1.socket.Connections[0].sendtext('16f');
 end;

end.
Kann mir jemand bei dem Problem weiterhelfen?



Gruß Chippie
  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 07:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz