Announcement

Collapse
No announcement yet.

Delphi5P: Client soll mit dem Senden der Daten warten

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

  • Delphi5P: Client soll mit dem Senden der Daten warten

    Hallo Delphianer,
    Folgender Fall:
    - Ein Client (TClientSocket) sendet einem Server (TServerSocket) Daten.
    - In der Zeit, wo der Server die Daten verarbeitet, wollen weitere Clients ihre Daten
    senden.

    Da beginnt mein Problem. Wie sieht in einem solchen Fall das korrekte Handling aus ? Da ich in der Online-Hilfe nichts zu diesem Problem fand, habe ich versucht, mir folgendermaßen weiterzuhelfen:

    - In dem Ereignis OnClientRead vom Server-Socket, habe ich am Anfang der Verarbeitung
    die Zeile Socket.SendText('VERARBEITUNG') eingefügt.
    - Im Ereignis OnRead vom Client-Socket frage ich den vom Server gesendeten String
    'VERARBEITUNG' ab.
    - Wenn der String zutrifft, deaktiviere ich den Client mit der folgenden Anweisung
    ClientSocket.Active := False;

    Leider kann ich nicht abschätzen, ob ich auf den richtigen Weg bin, oder ob es andere einfachere und sichere Lösungen gibt.

    Zuerst funktioniert meine Lösung noch gut, aber dann erhalte ich sporadisch 'Win-Sock-Fehlermeldungen'.

    Hättest Du einen Tip, wie ich mein oben beschriebenes Problen in den Griff bekomme ?

    MfG.
    Uwe
    [email protected]

  • #2
    Hallo Uwe!

    Als erstes solltest Du, wenn die Daten ein wenig größer sind und auch auf alle Fälle bei Deinem Server ankommen sollen, SocketStreams benutzen.
    Ich habe eine Woche dran rumgehangen, bis ich diesen Tip von A.Kosch bekam. *G*

    Dein Server sollte einzelne Threads für jede Clientanfrage abspalten (mußt Du bei Streams sowieso machen) und die Anfrage bearbeiten. Du kannst dann vorher auch Dein "Verarbeitung" schicken.

    Der Client sollte dann mit socket.close; die Verbindung schließen.
    Das Beispiel findest Du im Forum, wenn Du nach "TWinSocketStream" suchst. Aber aufgepaßt, es hat ein paar Tücken.

    Falls es nicht richtig klappt: [email protected]

    cu
    Tim

    Comment

    Working...
    X