AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Trivialproblem beim Öffnen eines TClientSocket
Thema durchsuchen
Ansicht
Themen-Optionen

Trivialproblem beim Öffnen eines TClientSocket

Ein Thema von Nimral · begonnen am 18. Jun 2015 · letzter Beitrag vom 19. Jun 2015
Antwort Antwort
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.609 Beiträge
 
Delphi 12 Athens
 
#1

AW: Trivialproblem beim Öffnen eines TClientSocket

  Alt 18. Jun 2015, 22:54
Steht das ClientType -Property des TClientSocket auf ctBlocking ?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Nimral

Registriert seit: 21. Sep 2005
18 Beiträge
 
#2

AW: Trivialproblem beim Öffnen eines TClientSocket

  Alt 18. Jun 2015, 23:29
Steht das ClientType -Property des TClientSocket auf ctBlocking ?
Hi Uwe,

Code:
  object ClientSocket: TClientSocket
    Active = False
    ClientType = ctNonBlocking
    Port = 0
    OnConnect = ClientSocketConnect
    OnDisconnect = ClientSocketDisconnect
    OnRead = ClientSocketRead
    OnError = ClientSocketError
    Left = 768
    Top = 312
  end
Also nonblocking. Sollte ich mal blocking probieren? Möchte den Port allerdings nonblocking fahren!

Fällt mir grad auf ... was auch noch fehlt ist der Code des OnConnect Handlers, vielleicht ist ja der der Bösewicht?

Code:
procedure TClientMainForm.ClientSocketConnect(Sender: TObject;
  Socket: TCustomWinSocket);
  begin
  DisplayMessage('Connect: ' + ConstructPrefix(Socket));
  end;
DisplayMessage schreibt einen Text in die Statuszeile des Forms, in der Form z.B. "Connect: 127.0.0.1:8888", zur Kontrolle. Sollte eigentlich nicht weh tun, oder?

Gruss Armin.

Geändert von Nimral (18. Jun 2015 um 23:38 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.609 Beiträge
 
Delphi 12 Athens
 
#3

AW: Trivialproblem beim Öffnen eines TClientSocket

  Alt 19. Jun 2015, 09:48
Wenn du non-blocking arbeitest, dann ist der Port nach dem Active := true noch nicht offen. Deswegen verschwindet der nachfolgende Send-Befehl im Nirwana.

Bei non-blocking musst du halt mit dem Senden warten, bis der Port wirklich offen ist. Das geht am besten über den OnConnect-Event.

Alternativ kannst du auch zyklisch das Active abfragen, das bei non-blocking nämlich trotz des Setzen auf true erst später true zurückliefert.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Nimral

Registriert seit: 21. Sep 2005
18 Beiträge
 
#4

AW: Trivialproblem beim Öffnen eines TClientSocket

  Alt 19. Jun 2015, 11:16
Wenn du non-blocking arbeitest, dann ist der Port nach dem Active := true noch nicht offen. Deswegen verschwindet der nachfolgende Send-Befehl im Nirwana.

Bei non-blocking musst du halt mit dem Senden warten, bis der Port wirklich offen ist. Das geht am besten über den OnConnect-Event.

Alternativ kannst du auch zyklisch das Active abfragen, das bei non-blocking nämlich trotz des Setzen auf true erst später true zurückliefert.
Hi Uwe,

Habs noch nicht probiert, aber das klingt so schlüssig dass es sicher klappt. Herzlichen Dank!

Gruss Armin.
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 11:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz