Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   System.Net.Socket.TSocket - Wer kennt sich aus? (https://www.delphipraxis.net/187455-system-net-socket-tsocket-wer-kennt-sich-aus.html)

TiGü 1. Dez 2015 16:13


System.Net.Socket.TSocket - Wer kennt sich aus?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,

ich bin neulich irgendwo hier in der DP über ein sehr einfaches Beispiel für TCP-Verbindungen mit den Indy-Komponenten gestolpert.
Dieses Beispiel habe ich ausprobiert und ein bisschen erweitert und aufgebohrt, weil ich neben Indy noch andere Clienttypen testen wollte.

Programmbeschreibung:
Durch einen abgeleiteten TIdCustomTCPServer wird eine kurze String-Nachricht in zufälligen Zeitabständen gesendet.
Ich habe drei Clients (Indy, alte TClientSocket-Komponente und TSocket aus System.Net.Socket).
Die Clients laufen in einen eigenen Threadkontext und geben auf einen Memo ihre empfangenden Daten aus
Der Client mit Indy-Komponente TIdTCPClient läuft problemlos, ebenso der mit TClientSocket.

Nur die Umsetzung mit der neuen Socketklasse aus System.Net.Socket kriege ich nicht hin.
Nach kurzer Zeit erscheint eine Exception:

Code:
Project TCPClientServer.exe raised exception class ESocketError with message 'Network socket error: Ein Verbindungsversuch ist fehlgeschlagen, da die Gegenstelle nach einer bestimmten Zeitspanne nicht richtig reagiert hat, oder die hergestellte Verbindung war fehlerhaft, da der verbundene Host nicht reagiert hat (10060), on API 'connect''.

System.Net.Socket.CheckSocketResult(???,'connect')
System.Net.Socket.TSocket.DoConnect
System.Net.Socket.TSocket.Connect(((-520, 1133, ((166, 47, 97, 0), ('¦', '/', 'a', #0), (12198, 97), 6369190), (#12, 'þ', 'm', #4, 'ü', '/', 'a', #0))))
System.Net.Socket.TSocket.BeginConnect$73$ActRec.$0$Body
System.Net.Socket.TSocket.TSocketConnectResult.AsyncDispatch
System.Classes.TBaseAsyncResult.DoAsyncDispatch
System.Net.Socket.TSocket.TSocketAsyncResult.Schedule$220$ActRec.$0$Body
System.Threading.TTask.Execute
System.Threading.TTask.InternalExecute($2AF1C80)
System.Threading.TTask.InternalWork(???)
System.Threading.TTask.ExecuteWork
System.Threading.TThreadPool.TQueueWorkerThread.ExecuteWorkItem(TTask($2AF1CC4) as TThreadPool.IThreadPoolWorkItem)
System.Threading.TThreadPool.TQueueWorkerThread.Execute
System.Classes.ThreadProc($2ACDCC0)
System.ThreadWrapper($2AB1130)
:7576337a kernel32.BaseThreadInitThunk + 0x12
:777e9882 ntdll.RtlInitializeExceptionChain + 0x63
:777e9855 ntdll.RtlInitializeExceptionChain + 0x36
Geht das überhaupt damit? Wenn ja, wo ist mein (Denk-)Fehler?
Bin mit so Netzwerkprogrammierung nicht wirklich vertraut.
Im Anhang zu finden in der Unit TCPClientServerExample.Client.NetSocket;

TiGü 2. Dez 2015 17:07

AW: System.Net.Socket.TSocket - Wer kennt sich aus?
 
Ich pushe einfach mal dreist. :shock:


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