AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Anfängerfrage: Non Blocking TCP Client in einem Thread
Thema durchsuchen
Ansicht
Themen-Optionen

Anfängerfrage: Non Blocking TCP Client in einem Thread

Ein Thema von alzaimar · begonnen am 4. Dez 2009 · letzter Beitrag vom 7. Dez 2009
Antwort Antwort
Seite 2 von 2     12   
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#11

Re: Anfängerfrage: Non Blocking TCP Client in einem Thread

  Alt 5. Dez 2009, 19:03
Zitat von sirius:
Wenn der ClientThread nicht aus dem Mainthread gestartet wird, solltest du jegliches Synchronize vermeiden.
Dann wird der 'OnConnected' Handler des TClientSockets aber nicht aufgerufen. Na, ich kanns nochmal testen oder poste mal den Code hier rein. Bin nur gerade aufm Flughafen. Poste das später mal rein.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#12

Re: Anfängerfrage: Non Blocking TCP Client in einem Thread

  Alt 5. Dez 2009, 21:13
Zitat von alzaimar:
Zitat von sirius:
Wenn der ClientThread nicht aus dem Mainthread gestartet wird, solltest du jegliches Synchronize vermeiden.
Dann wird der 'OnConnected' Handler des TClientSockets aber nicht aufgerufen.
Wieso das?
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Astat

Registriert seit: 2. Dez 2009
Ort: München
320 Beiträge
 
Lazarus
 
#13

Re: Anfängerfrage: Non Blocking TCP Client in einem Thread

  Alt 7. Dez 2009, 23:46
Hallo alzaimar, das mit den Asynchronen (Windows Messages) Sockets, in einem eigenen Thread,
ist bei sauberer Implementierung ja möglich (siehe meinen vorigen Post). Ich würde es aber nicht so komliziert angehen.

Erstell einen Thread, in diesem verwendest du ein paar Zeilen Socket-API (nicht die aufgeblasene TClientSocket Komponente).
Du implementierst eine Sendeprozedure, diese löst ein Event aus und weckt den Thread auf.
Dann sendest Du im Execute die Daten, und wartest im Recv bis der Server antwortet.
Dann triggerst du die Callback mit den gelieferten Daten.

Solange du keine Globalen Variablen in der Callback oder visuelle VCL Objekte verwendest,
brauchst du nicht mal Synchronisationsobjekte implementieren.


Sieh dir das beigelegte Demo an, ist einfach, robust und vor allem unkompliziert.

Tip:

So ungefähr das Verständlichste und Brauchbarste API Tutorial ist unter folgendem Link verfügbar:

http://www.delphi-treff.de/tutorials...ets-mit-winapi

Hoffe dies alles hilft etwas.

lg. Astat
Angehängte Dateien
Dateityp: rar syncsocketsample_143.rar (2,6 KB, 68x aufgerufen)
Lanthan Astat
06810110811210410503210511511603209711003210010110 9032084097103
03211611111604403209711003210010110903210010510103 2108101116122
11610103209010110510810103206711110010103210511003 2068101108112
10410503210310111509910411410510109810111003211910 5114100046
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 00:42 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