AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi probleme mit sockets
Thema durchsuchen
Ansicht
Themen-Optionen

probleme mit sockets

Ein Thema von Van HelF · begonnen am 2. Jun 2006 · letzter Beitrag vom 5. Jun 2006
Antwort Antwort
Van HelF

Registriert seit: 24. Okt 2005
Ort: Karlsbrunn
195 Beiträge
 
Delphi 7 Personal
 
#1

probleme mit sockets

  Alt 2. Jun 2006, 17:14
Hallo,
ich habe ein chatprogramm, mithilfe der sockets von delphi6 geschrieben.
mein problem ist, dass manchmal, wenn ein client dis/connected, der server einen stack overflow bekommt, und sich dann beendet.
kennt jemand zufällig dieses problem ?
  Mit Zitat antworten Zitat
pacman1986

Registriert seit: 11. Feb 2005
Ort: Kirchhain
498 Beiträge
 
Delphi 2005 Personal
 
#2

Re: probleme mit sockets

  Alt 2. Jun 2006, 17:21
ja ich.
Man kann das lösen indem man die Fehler abstellt im onerror Bereich Errorcode := 0;
Christian N.
Designed to make a difference

najjaronline.de
  Mit Zitat antworten Zitat
Balu der Bär
(Gast)

n/a Beiträge
 
#3

Re: probleme mit sockets

  Alt 2. Jun 2006, 17:23
Ohja, den Fehler unterdrücken ist wirklich sehr schlau.

@Van HelF: Ohne ein bisschen Code wird der keiner bei deinem Problem helfen können.
  Mit Zitat antworten Zitat
Van HelF

Registriert seit: 24. Okt 2005
Ort: Karlsbrunn
195 Beiträge
 
Delphi 7 Personal
 
#4

Re: probleme mit sockets

  Alt 2. Jun 2006, 17:32
so das ist der client
Delphi-Quellcode:
procedure TForm1.ClientSocket1Connect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  memo1.Lines.Add('Verbunden mit : '+clientsocket1.Socket.RemoteHost+' (IP: '+clientsocket1.Socket.RemoteAddress+')');
  connected:=true;
  history('################ '+datetostr(now)+' Session gestartet ################');
  history('');
  send_version;
end;

procedure TForm1.ClientSocket1Error(Sender: TObject;
  Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
  var ErrorCode: Integer);
var fehlerbuffer:integer;
begin
  fehlerbuffer:=errorcode;
  errorcode:=0;
  if fehlerbuffer<>10061 then memo1.Lines.Add('Es ist ein Fehler aufgetreten. [Code: '+inttostr(fehlerbuffer)+']')
    else memo1.Lines.Add('Server zur Zeit nicht erreichbar ...');


  if fehlerbuffer=10049 then
    memo1.Lines.Add('Bitte wiederholen Sie den Vorgang ...');
    
  clientsocket1.Active:=false;
end;

procedure TForm1.ClientSocket1Disconnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  memo1.Lines.Add('Verbindung zum Server wurde unterbrochen ...');
  connected:=false;
  form2.Visible:=false;
  form2.ListBox1.Clear;
  form2.ListBox2.Clear;
  form2.ListBox3.Clear;
  form2.ListBox4.Clear;
end;

procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
var nachr:string;
    senden:boolean;
begin
  nachr:=socket.ReceiveText;
  entschl(xchar,nachr);
  check_sp(nachr,senden);
  if senden=true then
  begin
    memo1.Lines.Add(nachr);
    status(nachr);
    history(nachr);
  end;
end;
und das der server
Delphi-Quellcode:
procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
var wtext:string;
begin
  send_text('['+thetime+' Server Message ] : Ein Client hat sich angemeldet ...',-1);
  memo1.Lines.Add('['+thetime+'] : Ein Client hat sich angemeldet ...');
  inc(clients);
  label3.Caption:=inttostr(clients);
  wtext:='Willkommen auf dem Loos - Teck KmsG Server Lite 0.4 Beta / '+inttostr(clients)+' Client(s) online ...';
  verschl(wtext,xchar,wtext);
  serversocket1.Socket.Connections[clients-1].SendText(wtext);
end;

procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  send_text('['+thetime+' Server Message ] : Ein Client hat sich abgemeldet ...',0);
  memo1.Lines.Add('['+thetime+'] : Ein Client hat sich abgemeldet ...');
  dec(clients);
  label3.Caption:=inttostr(clients);
end;

procedure TForm1.ServerSocket1ClientError(Sender: TObject;
  Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
  var ErrorCode: Integer);
var errbuffer:integer;
begin
  errbuffer:=errorcode;
  errorcode:=0;
  memo1.Lines.Add('FEHLER : '+inttostr(errbuffer));
  stop:=true;
  panel1.Visible:=true;
end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var nachricht:string;
begin
  timer2.Enabled:=true;
  nachricht:=socket.ReceiveText;
  nachricht:='['+thetime+' '+copy(nachricht,2,length(nachricht));
  send_text(nachricht,0);
end;
  Mit Zitat antworten Zitat
Van HelF

Registriert seit: 24. Okt 2005
Ort: Karlsbrunn
195 Beiträge
 
Delphi 7 Personal
 
#5

Re: probleme mit sockets

  Alt 5. Jun 2006, 14:19
weiss niemand, wie man dieses problem lösen könnte ?
  Mit Zitat antworten Zitat
guste

Registriert seit: 23. Apr 2006
19 Beiträge
 
#6

Re: probleme mit sockets

  Alt 5. Jun 2006, 16:44
Als potentielle Fehlerquelle fällt mir spontan nur das auf.

Delphi-Quellcode:
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var nachricht:string;
begin
  timer2.Enabled:=true;
  nachricht:=socket.ReceiveText;
  nachricht:='['+thetime+' '+copy(nachricht,2,length(nachricht));
  send_text(nachricht,0);
end;
Wenn nachricht = '' ist dürfte es krachen.


Ich würde beim Server Haltepunkte setzen, und zwar in ServerSocket1ClientRead, ServerSocket1ClientDisconnect und ServerSocket1ClientError, den Client disconnecten und dann mal schauen ...
guste
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#7

Re: probleme mit sockets

  Alt 5. Jun 2006, 16:48
Oder mal mit try .. ecxept .. end arbeiten.

Florian
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Van HelF

Registriert seit: 24. Okt 2005
Ort: Karlsbrunn
195 Beiträge
 
Delphi 7 Personal
 
#8

Re: probleme mit sockets

  Alt 5. Jun 2006, 17:41
try except hilft leider auch nicht.
der server hängt sich auf, und in der ereignis ansicht sieht man , wie sich , aus welchen gründen auch immer, endlos clients an oder abmelden,
irgendwann, beendet sich der server dann.
die probleme treten eigentlich hauptsächlich im WLAN auf, liegt vl. an der höheren latenz.
  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:16 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