Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi nonVCL Socket Unit (https://www.delphipraxis.net/97946-nonvcl-socket-unit.html)

Zacherl 19. Aug 2007 14:22


nonVCL Socket Unit
 
Hey,

ich habe vor einiger Zeit mal ein Programm geschrieben, in dem ich die TClientSocket Klasse verwende. Nun wollte ich - da es sich eh um eine Konsolenanwendung handelt - das ganze nach nonVCL portieren, also nicht SysUtils, Classes, etc verwenden.
Um nicht alles umschreiben zu müssen wollte ich fragen, ob eventuell jemand eine Unit besitzt die die TClientSocket Klasse ohne die VCL / RTL implementiert.
Habe hier im Forum mal die SocketUnit gefunden, welche allerdings ziemlich unfertig war. Im besonderen geht es mir um eine Timeout Eigenschaft, da die Sockets die ma über die WinSock API erzeugt einen viel zu hohen Timeout Wert besitzen.

Gruß Zacherl

1234588 19. Aug 2007 15:47

Re: nonVCL Socket Unit
 
auf Luckie's seite ist ein relativ einfaches beispiel zu finden
http://luckie-online.de/Developer/De...WinSockets.zip

Zacherl 19. Aug 2007 16:26

Re: nonVCL Socket Unit
 
Ich weiß, wie ich die WinSock APIs benutzen kann :D Mein Problem ist nur, dass ich gerne das Timeout selbst einstellen kann. Versuche mal mit Luckies Client zu einer nicht vorhandenen IP zu verbinden. Da wartest du Stunden, bis das Programm wieder reagiert ;)

Ideal wäre halt eine fertige Unit, die das TClientSocket mit den bekannten Methoden allerdings ohne die VCL / RTL implementiert.

ErazerZ 19. Aug 2007 16:57

Re: nonVCL Socket Unit
 
Timeout zu programmieren? Du rufst einfach nur connect in winsock auf und prüfst obs Fehler gab oder nicht. Falls es Fehler gab dann rufst Sleep auf (und ggf. die Sockets/Handles freigeben) und springst nochmal zum Verbinden. Ich verstehe nicht genau was das Problem sein soll.

Zacherl 19. Aug 2007 17:08

Re: nonVCL Socket Unit
 
Das Problem ist, dass Connect mit einer IP auf der kein Server lauscht Ewigkeiten braucht um überhaupt einen Statuscode zurückzugeben. Ich möchte halt nach einer selbst definierten Zeit den Verbindungsaufbau abbrechen.

Luckie 19. Aug 2007 19:25

Re: nonVCL Socket Unit
 
Dann lagere es in einen Thread aus, was sowieso sinnvoll ist, und wenn nach einer bestimmten Zeit keine Rückmeldung kommt, beendest du den Thread.

Zacherl 19. Aug 2007 20:12

Re: nonVCL Socket Unit
 
Ich werde mich mal hinsetzen wenn ich Zeit habe und eine neue nonVCL TClientSocket Klasse basteln. Das mit den Threads werde ich mal versuchen .. Danke :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:26 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