AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Wo ist der Fehler??? Sendtext-Problem
Thema durchsuchen
Ansicht
Themen-Optionen

Wo ist der Fehler??? Sendtext-Problem

Ein Thema von Amo · begonnen am 22. Jan 2006 · letzter Beitrag vom 23. Jan 2006
Antwort Antwort
Amo

Registriert seit: 26. Okt 2005
82 Beiträge
 
Delphi 7 Enterprise
 
#1

Wo ist der Fehler??? Sendtext-Problem

  Alt 22. Jan 2006, 15:09
Ich habe ein Problem mit einer Client-Server-Verbindung. Unter benutzung der TClientSocket und TServerSocket einen Server gemacht und einen Clienten. Kein Problem mit dem Verbinden Selber, der Server zeigt auch die Verbindung an, also kein problem. Aber sobald ich mit dem Clienten einen Text (mit senttext) schicke kackt alles ab : die Verbindung bricht ab und ich bekomme die Fehlermeldung (beim Clienten), dass das Senden verhindert wurde, weil die verbindung abgebrochen wurde.

Hier Der Code von Clienten: (Button2 soll 'reconnect' sein, ist aber irrelevant)
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Client: TClientSocket;
    Edit1: TEdit;
    Button1: TButton;
    Button2: TButton;
    Panel1: TPanel;
    Timer1: TTimer;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure ClientError(Sender: TObject; Socket: TCustomWinSocket;
      ErrorEvent: TErrorEvent; var ErrorCode: Integer);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Client.Socket.SendText('hallo');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Client.Active := false;
  Client.Active := true;
end;

procedure TForm1.ClientError(Sender: TObject; Socket: TCustomWinSocket;
  ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
  showmessage('Error!!!!!');
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  If Client.Socket.Connected = true then
  panel1.Caption := 'connected'
  else
  panel1.Caption := 'not connected';
end;

end.
Der Server müsste eigentlich auch ok sein: (Button1 soll 'restart' sein, hier auch wieder irrelevant)
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Server: TServerSocket;
    Memo1: TMemo;
    Button1: TButton;
    procedure ServerClientRead(Sender: TObject; Socket: TCustomWinSocket);
    procedure ServerClientConnect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ServerClientDisconnect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure Button1Click(Sender: TObject);
    procedure ServerAccept(Sender: TObject; Socket: TCustomWinSocket);
    procedure ServerClientError(Sender: TObject; Socket: TCustomWinSocket;
      ErrorEvent: TErrorEvent; var ErrorCode: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ServerClientRead(Sender: TObject;
  Socket: TCustomWinSocket);

var
  msg: string;
begin
  server.Socket.Read(1);
  msg := server.Socket.ReceiveText;
  memo1.Lines.Add(msg);
end;

procedure TForm1.ServerClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  memo1.Lines.Add('Client connected!!!');
end;

procedure TForm1.ServerClientDisconnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  memo1.Lines.Add('Client disconnected!!!');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 Server.Active := false;
 server.Free;
 sleep(500);
 Server.Active := true;
 server.Open;
end;

procedure TForm1.ServerAccept(Sender: TObject; Socket: TCustomWinSocket);
begin
  memo1.Lines.Add('Accepted');
end;

procedure TForm1.ServerClientError(Sender: TObject;
  Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
  var ErrorCode: Integer);
begin
  memo1.Lines.Add('ClientError!');
end;

end.
Hoffe es kann mir jemand helfen, bin hier am verzweifeln

PS: Ich habe schon bei verwandten themen geguckt aber nichts konnte mich weiterbringen.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: TClientSocket und Sendtext-Problem

  Alt 22. Jan 2006, 17:21
1. Beim Client: Warum einen Timer um den Status anzuzeigen? Nutze OnConnect und OnDisconnect um das Panel abzuändern!

2. Beim Server: Was soll diese hier bewirken bzw. was für ein Sinn sollte es haben im OnClientRead? server.Socket.Read(1); ????

3. Beim Server: Du gibst die Komponente frei im Button1Click, somit ist die Komponente nicht mehr existent - wie kommst du nur auf diese Idee? server.Free; 4. Beim Server: Die Methode Open bei den beiden Socket Komponenten macht nix anderes als Active auf True zu setzen. Daher kannst du dich auf eins von beiden einigen im Button1Click - beides hilft nix (Viel hilft viel Pack...aber nicht hier)
  Mit Zitat antworten Zitat
Amo

Registriert seit: 26. Okt 2005
82 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Wo ist der Fehler??? Sendtext-Problem

  Alt 22. Jan 2006, 21:02
Danke für deine Antwort!

Nur die vier von dir genannten sachen sind nur verbesserungsvorschläge und haben nichts mit dem eigentlichen Problem zu tun.

Zu punkt 2: DU hast recht, das bringt echt gar nichts, war nur zum ausprobieren^^. Habe es wieder weg gemacht, geht aber trotzdem nicht


*Wiederholte Bitte um Hilfe* *gaaaaaanz lieb guck* ^^
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Wo ist der Fehler??? Sendtext-Problem

  Alt 22. Jan 2006, 21:30
Hi.

Kann es sein, dass du vergessen hast deine Delphi Version anzugeben?

Die Hinweise von Thomas solltest du übrigens nicht so abtun - das sind ganz handfeste Fehler in deinem Code. Im Anhang findest du eine kleine Demo.

Grüße vom marabu
Angehängte Dateien
Dateityp: zip sock_282.zip (4,2 KB, 6x aufgerufen)
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#5

Re: Wo ist der Fehler??? Sendtext-Problem

  Alt 23. Jan 2006, 08:00
Zitat von Amo:
Nur die vier von dir genannten sachen sind nur verbesserungsvorschläge und haben nichts mit dem eigentlichen Problem zu tun.
Mit anderen Worten: Du verstehst überhaupt nicht, was du machst, oder? Sonst würde dir der 3. Punkt im Normalfall einen Stich ins Herz bereiten und nicht so locker als "Verbesserungsvorschlag" abgetan werden.
  Mit Zitat antworten Zitat
Amo

Registriert seit: 26. Okt 2005
82 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Wo ist der Fehler??? Sendtext-Problem

  Alt 23. Jan 2006, 13:01
lol, ja ok. Du hast da schon recht, ich meine das nur so: wenn ich den server einfach nur starte, den clienten verbinde und versuche den text zu senden, gehts nicht. Ich klicke bei dem server nicht auf reconnect, also wäre das nur dann zu beachten, aber du hast schon recht und gut dass du es mir sagst, denn früher oder später müsste ich das sowieso bearbeiten .

@marabu: vielen dank für deine demo, ich hatte bis jetzt noch keine zeit es mir richtig anzugucken, werde ich aber möglichst bald tun.
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:47 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