AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Beim Connecten Fehler abfangen
Thema durchsuchen
Ansicht
Themen-Optionen

Beim Connecten Fehler abfangen

Ein Thema von halinchen · begonnen am 7. Nov 2006 · letzter Beitrag vom 12. Nov 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von halinchen
halinchen

Registriert seit: 13. Jun 2006
508 Beiträge
 
Delphi 2007 Professional
 
#1

Beim Connecten Fehler abfangen

  Alt 7. Nov 2006, 16:40
Hi! Bin LAN-Programmierungsneuling.

Ich habe ein Problem mit LAN in Delphi.

Ich hab mir das Tutorial auf http://www.dsdt.info/tutorials/winsocket/?page=3 angeguckt.
Jetzt wollte ich ein Chat-Programm zum üben programmieren.

Mein Problem ist: Wie erkenne ich ob es den Anderen Computer überhaupt gibt?
(Wenn es ihn nicht gibt kommt ein Socket-Fehler(11001 - Host unbekannt)
Den Fehler ich wollte beim Ereignis ClientSocket.OnError abfangen, da kommt aber nichts an! (Manchmal schon, aber eben nicht immer!!!)

Wenn sich das Problem mit den Standartmitteln nicht bekämpfen lässt, geht das dann bei Indy besser?
Wenn ja wie verbinde ich mit Indy.

Wie gesagt bin LAN-Programmierungsneuling und hier im Forum hab ich immer nur Fragen und Antworten von "Experten" gefunden.

P.S. Liegt nicht an Firewall.
  Mit Zitat antworten Zitat
TurboMartin

Registriert seit: 13. Feb 2006
Ort: Bad Honnef
765 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Beim Connecten Fehler abfangen

  Alt 7. Nov 2006, 16:45
Probiers mal mit try... except... end.
Delphi-Quellcode:
var
  Socket: TClientSocket;
begin
  try
    //Initialisierung des Objekts
    Socket := TClientSocket.Create(Form1);

    //Zuweisen eines Portes zB 10024
    Socket.Port := 10024;

    //Folgende Zeile bräuchte ein TClientSocket noch:
    Socket.Host := '127.0.0.1';
     
    //In den Listening-Status gehen bzw connecten
    Socket.Open;
  except
    //hier Fehlerbehandlung einfügen
  end;
end;
Tomorrow will be cancelled due to lack of interest.

  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Beim Connecten Fehler abfangen

  Alt 7. Nov 2006, 17:32
Hi,

implementier das ganze mal über die vorhandenen Kompos in deinem D5. Hast Du sonst deine Provedure auch dem Ereignis zugewiesen?

Gruß oki
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Beim Connecten Fehler abfangen

  Alt 7. Nov 2006, 18:27
Offenbar, sonst würden die Fehler nicht manchmal kommen, und manchmal eben auch nicht.
Wunder dich nicht, wenn dein Delphi dir trotz dem try...except-Block einen Fehler anzeigt, wenn du die Exe alleine startest, wird der Fehler nicht mehr in einer unschönen MSG-Box angezeigt
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Benutzerbild von halinchen
halinchen

Registriert seit: 13. Jun 2006
508 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Beim Connecten Fehler abfangen

  Alt 8. Nov 2006, 15:41
Danke für die Antworten!

try/except hilft da leider nichts(getestet);

Zitat von inherited:
Offenbar, sonst würden die Fehler nicht manchmal kommen, und manchmal eben auch nicht.
Wunder dich nicht, wenn dein Delphi dir trotz dem try...except-Block einen Fehler anzeigt, wenn du die Exe alleine startest, wird der Fehler nicht mehr in einer unschönen MSG-Box angezeigt
--> Das könnte es sein, teste ich mal

//edit: klappt immer noch nicht.
Was ist eigentlich bei der Indy-Kompo, darf man da Server und Client nicht auf der selben Form haben?
Hab ein paar Quelltexte von anderen runtergeladen und da gehts, nur bei mir nicht!
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Beim Connecten Fehler abfangen

  Alt 8. Nov 2006, 20:05
Meine Kristallkugel ist grad im Urlaub, wärst du also so nett ein bisschen Quelltext zu zeigen?^^
Und: Ja, die dürfen auf der gleichen Form liegen.
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Benutzerbild von halinchen
halinchen

Registriert seit: 13. Jun 2006
508 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Beim Connecten Fehler abfangen

  Alt 9. Nov 2006, 16:32
Sorry
Delphi-Quellcode:
procedure TFormConnect.BitBtn1Click(Sender: TObject);
var Rec:MessageRec;
begin
If Edit1.Text = 'then begin
   ShowMessage('Bitte IP eingeben!');
   exit;
   end;
//try
Form1.Client.Host := Edit1.Text;
Form1.Client.Port := Port;
Form1.Client.Active:=true;
// oder auch .open
{except
ShowMessage('Fehler aufgetreten!');
end;}

randomize;
Rec.Typ:=MR_Connect;
Rec.Name:=Name;
Rec.Nickname:=Nickname;
Code:=Random(100); //Für Verschlüsselung
//Form1.Client.Socket.SendBuf(Rec,SizeOf(rec));
//-> wollte ertmal den Testen das es connected
State:=Connect;
{Form1.WaitForConnect.Tag :=0;
Form1.WaitForConnect.Enabled :=true;}

Form1.Status.SimpleText:= 'Verbindungsaufbau...';

end;
und

Delphi-Quellcode:
procedure TForm1.ClientError(Sender: TObject; Socket: TCustomWinSocket;
  ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
  Memo1.Lines.Add('Fehler '+IntToStr(ErrorCode));
  ErrorCode := 0; // keine Exception erzeugen, Fehler behandelt
end;
Wegen try except:
Wenn ich das in einen Try except Block mache ist das so:
Es ruft Client.Open auf und macht dann gleich weiter.
Und erst später wird der Fehler ausgelöst. (Ich nehme an nach LookUp)

Kannst du mal testen ob das bei dir geht:
Mach nen Server stell ihn auf einen Port ein und aktiviere ihn.
Bei OnError beim Clienten irgent eine Meldung reinschreiben.
Dann bei ButtonClick Client auf nichtvorhandene IP setzen und den Clienten aktivieren.

Dann paar mal auf den Button Klicken.
Bei mir kommt mal meine Meldung und mal die vorgefertigte.

Kann sowas am Compiler liegen?

Ich könnte ja auf Indy umsteigen aber das funktioniert auch nicht, da findets nie einen Server!!!
Sowas hatte ich noch nie!!!

P.S.auch bei Sources von anderen kommt mal meine und mal die vorgefertigte Meldung
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#8

Re: Beim Connecten Fehler abfangen

  Alt 9. Nov 2006, 19:52
Zitat von halinchen:
Wegen try except:
Wenn ich das in einen Try except Block mache ist das so:
Es ruft Client.Open auf und macht dann gleich weiter.
Und erst später wird der Fehler ausgelöst. (Ich nehme an nach LookUp)
Richtig, weil der Socket einen Thread hat und im Hintergrund (parallel zu deinem Aufruf) arbeitet. Dadurch kannst du das mit dem Try/Except komplett in die Tonne treten - das ist Schwachfug.

Du hast als einzige Möglichkeit das OnError Ereignis und dort musst du ErrorCode auf 0 setzen. Dies machst du nun auch schon. Das du eine Exception angezeigt bekommst in der IDE kann ja gut und gerne sein, aber zur Laufzeit ohne IDE sollte diese nicht mehr erscheinen.
  Mit Zitat antworten Zitat
Benutzerbild von halinchen
halinchen

Registriert seit: 13. Jun 2006
508 Beiträge
 
Delphi 2007 Professional
 
#9

Re: Beim Connecten Fehler abfangen

  Alt 10. Nov 2006, 15:14
Das hab ich ja schon getestet.

Auch wenn ich nur die Exe, ohne Delphi starte kommt die Exception falsch.

Da muss ich wohl mit leben.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#10

Re: Beim Connecten Fehler abfangen

  Alt 11. Nov 2006, 00:04
Zitat von halinchen:
Das hab ich ja schon getestet.

Auch wenn ich nur die Exe, ohne Delphi starte kommt die Exception falsch.

Da muss ich wohl mit leben.
Wird in deinem Memo denn der Fehlercode vermerkt? Es kommt definitiv keine Exception, wenn OnError zugewiesen wurde. Wenn du nun also eine bekommst, dann ist die Frage ob die Zuweisung noch besteht. Daher: kommt eine Fehlerausschrift in deinem Memo oder ist die Zuordnung vllt. im Objektinspektor rausgefallen?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 23:18 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