Entwickler-Ecke
Internet / Netzwerk - clientsocket.OnConnect Problem...
Terra - Fr 16.06.06 09:43
Titel: clientsocket.OnConnect Problem...
Ich habe hier eine Procedure, die sich ja irgendwo selbst erklärt. Allerdingst hab ich da ein gewalltiges Problem:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| procedure TForm1.BtnConnectClick(Sender: TObject); var i: integer; antwort : array [0..99] of string;
const ServerIP : array [0..1] of string = ('127.0.0.1', '80.70.60.50');
begin for i := 0 to 1 do begin ClientSocket.Host := ServerIP[i]; ClientSocket.Port := 80; clientSocket.Open; if clientsocket.OnConnect(nil, clientsocket.Socket) = true then begin ClientSocket.Close; antwort[i] := 'Connect OK!'; end else begin ClientSocket.Close; antwort[i] := 'Connect Fehler!'; end; sleep(200); end; suiDialogBox(1,' Information','Server 1: ' + antwort[1] + #13 + 'Server 2: ' + antwort[2] ); end; |
Was zum Kuckuck muss ich in der IF Anweisung reinschreiben, damit es funktioniert.
if clientsocket.OnConnect(nil, clientsocket.Socket) = true then ...
Ich bekomme mit dieser Anweisung eine Fehlermeldung. (Invalid Irgendwas)
Kann mir wer das richtig schreiben ???
Terra
jasocul - Fr 16.06.06 09:49
Titel: Re: clientsocket.OnConnect Problem...
Terra hat folgendes geschrieben: |
Ich bekomme mit dieser Anweisung eine Fehlermeldung. (Invalid Irgendwas)
Kann mir wer das richtig schreiben ??? |
Wenn du die Fehlermeldung richtig hinschreiben kannst? Sorry, habe heute meinen witzigen Tag.
Ernsthaft: Ich habe jetzt keine Lust Delphi zu starten und beim clientsocket.onconnect nachzusehen, was der Rückgabewert und der Typ ist. Aber das dürfte theoretisch in der OH stehen. Ansonste nschreibe doch einfach die Fehlermeldung genau hin, dann ist meistens schon klar, was da hin muss.
Terra - Fr 16.06.06 10:28
Das ist ja das Problem . .ich weis nicht mehr genau was Delphi geschrieben hat. Habe hier auf Schule kein Delphi und zu Hause kein Internet um schnell mal zu korrigieren. (Tolle kombination)
Die Fehlermeldung bezieht sich auf clientsocket.OnConnect(nil, clientsocket.Socket); um genau zu sein auf das clientsocket.socket.
Dort möchte er ein TCustomWinSocket haben. kann damit aber nichts anfangen.
onConnect(Sender: TObject; Socket:TCustomWinSocket); so in etwa wird onConnect gehändelt.
Terra
Fighter#1 - Fr 16.06.06 10:37
Soweit ich dich verstehe, soll das ein IP-Scanner sein?
Aber das OnConnect ereignis solltest du nicht provozieren, um zu schauen ob du verbunden bist.
Du könntest aber im onconnect ereignis mit try except versuchen einen Text an den Server zu senden.
Könnte so ausschaun:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure OnConnect(...); begin try ClientSocket1.Socket.SendText('IP-Scanner Lookup'); antwort[i]:='Connect OK'; except antwort[i]:='Connect Fehler'; end; end;
procedure OnError(...); begin ErrorCode:=0; end; |
i und antwort müsstest du in den Private oder Public bereich setzen um procedure übergreifend damit arbeiten zu können.
MfG Fighter#1
jasocul - Fr 16.06.06 10:39
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| procedure TForm1.BtnConnectClick(Sender: TObject); var i: integer; antwort : array [0..99] of string;
const ServerIP : array [0..1] of string = ('127.0.0.1', '80.70.60.50');
begin for i := 0 to 1 do begin ClientSocket.Host := ServerIP[i]; ClientSocket.Port := 80; clientSocket.Open; if clientsocket.active then begin ClientSocket.Close; antwort[i] := 'Connect OK!'; end else begin ClientSocket.Close; antwort[i] := 'Connect Fehler!'; end; sleep(200); end; suiDialogBox(1,' Information','Server 1: ' + antwort[1] + #13 + 'Server 2: ' + antwort[2] ); end; |
Es gibt Tage ... *kopfschüttel*
OnConnect ist ein Ereignis und keine Methode, bzw. Funktion.
Um zu prüfen, ob die Verbindung besteht, musst du es nur so ändern, wie ich es um Source gemacht habe.
Ich habe die Änderung allerdings jetzt nicht geprüft.
Terra - Fr 16.06.06 10:44
Achso ... danke.
Warum kann ich denn nicht mit den Funktionen (bzw. Ereignisse) arbeiten, wenn se mir aber angeboten werden? Verstehe ich nicht ganz. Hab so weit noch nicht gearbeitet, das mir das bewusst wäre.
Trotzdem vielen Dank für die Hilfen.
Achso @Fighter: Genau diese Version wollte ich ja eigentlich verhindern, da ich damit schwierigkeiten bekommen habe. Bin ja schon selbst erstaunt, das ich die Prozedure von mir fast ganz alleine hinbekommen habe ^^
Terra
jasocul - Fr 16.06.06 10:48
Das *kopfschüttel* war auf mich bezogen und nicht auf dich. :wink:
Das kann man schon. Nur die Methode, die du verwenden wolltest, ist keine Funktion und hat somit auch keinen Rückgabewert, den du abfragen könntest. Also kannst du es in einer If-Abfrage nicht verwenden. Du kannst es höchstens wie eine Prozedur verwenden.
Terra - Fr 16.06.06 10:58
| Zitat: |
| Das *kopfschüttel* war auf mich bezogen und nicht auf dich. |
Wär auch nicht weiter schlimm gewesen. ^^
also wäre es dann möglich wenn ich das onConnect so verwende?
Delphi-Quelltext
1:
| clientsocket.onConnect := geheZuProdedureDieIrgendwasMacht; |
Liege ich da richtig?
Terra
Fighter#1 - Fr 16.06.06 11:01
ja
Terra - Fr 16.06.06 11:08
^^ Danke.
So langsam verstehe ich den unterschied.
Terra
Narses - Fr 16.06.06 12:28
Moin!
Nur der Vollständigkeit halber... ;)
jasocul hat folgendes geschrieben: |
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure TForm1.BtnConnectClick(Sender: TObject); var i: integer; antwort : array [0..99] of string;
const ServerIP : array [0..1] of string = ('127.0.0.1', '80.70.60.50');
begin for i := 0 to 1 do begin ClientSocket.Host := ServerIP[i]; ClientSocket.Port := 80; clientSocket.Open; if clientsocket.active then [...] |
|
cu
Narses
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!