Announcement

Collapse
No announcement yet.

Abwarten mit WaitForData

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Abwarten mit WaitForData

    Hallo,

    vielleicht kann mir jemand einen Tipp geben. Ich benötige eine TCP/IP Verbindung zu einer Serveranwendung, welche wiederum mit einem Messgerät kommuniziert. Die passend Komponente wäre aus meiner Sicht TTcpClient (C++Builder 2007 R2, TClientSocket wird nicht mehr automatisch mitinstalliert).
    Die Kommunikation läuft über eigene Threads ab (wie dokumentiert).

    Der TTcpClient läuft im Blocking-Mode (wie der Server), und damit beginnt mein Problem. Wenn ich mit WaitForData (eine TTcpClient-methode) darauf warte, dass der Server bereit, dann läuft WaitForData immer ins TimeOut, egal welche Zeit Wartezeit ich vorgebe. Ignoriere ich WaitForData, dann kann ich problemlos mit der SendBuf-Methode des TcpClients Daten (ASCII-Zeichen) zum Server schieben und dieser antwortet auch entsprechend.
    Leider kann ich nur diese Daten (ebenfalls ASCII) nicht mit meiner Anwendung lesen, da ein erneutes WaitForData oder ein ReceiveBuf wieder in TimeOut läuft.

    Habe schon verschiedene Generationen C++ Dokus mir angeschaut, aber anscheinend habe ich da immer noch was übersehen.
    Kann jemand helfen?

    Danke, Ralf

  • #2
    TClientSocket kann aber nachinstalliert werden
    Christian

    Comment


    • #3
      Originally posted by Ralf Eberhardt View Post
      TClientSocket wird nicht mehr automatisch mitinstalliert).
      Du kanst die nachträchlich noch installieren da sie mit auf de CD/DVD kommen.

      Die Kommunikation läuft über eigene Threads ab (wie dokumentiert).
      Meinst du die Kommunikation zwischen Server und Messgerät?

      Erst mahl vorweg: Ich habe keine erfahrung mit TTcpClient. Ich hab viel gemacht met TClientSocket/TServerSocket.

      Der TTcpClient läuft im Blocking-Mode (wie der Server),
      Ein TTcpClient kan nur in blocking modus?
      Wenn sie auch nicht-blocking meistert, denn warum nicht nicht-blocking gewählt?

      Uebrigens kann mann eine nicht-blocking client benutzen bij eine blocking server.

      Es scheint das TTcpClient und TTcpServer (aus der CLX Zeit) nicht so gut sind. "poorly designed components" kan mann in die cppbuilder newsgroups lesen.


      Besser benutze TClientSocket oder TIdTCPClient (oder so) von Indy.

      ....verschiedene Generationen C++ Dokus .....
      Wass sind das???

      Comment


      • #4
        Wass sind das???
        Verschiedene Dokus von verschiedenen Versionen
        Christian

        Comment


        • #5
          Hallo Christian, hallo Hans,

          vielen Dank für Hilfe. TClientSocket habe ich nachinstalliert. Jetzt läuft die Kommunikation damit.
          Es konnte nicht funktionieren, da die Messgerätehersteller-Doku in diesem Teil unvollständig war (noch recht neu). Erstens läuft die Sache nun doch im non-Blocking-Mode (allerdings nicht mit TTcpClient), und zweitens war die Kommandoübergabe unvollständig. Der Server konnte nicht antworten.

          Danke,
          Ralf

          Comment

          Working...
          X