AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Winsock socket.SendText
Thema durchsuchen
Ansicht
Themen-Optionen

Winsock socket.SendText

Ein Thema von Atretis · begonnen am 27. Dez 2009 · letzter Beitrag vom 27. Dez 2009
Antwort Antwort
Atretis

Registriert seit: 27. Apr 2009
Ort: Hückelhoven
4 Beiträge
 
#1

Winsock socket.SendText

  Alt 27. Dez 2009, 14:38
Hallo,
wenn ich schnell hintereinander was zum Server sende z.B. :

Delphi-Quellcode:
socket.SendText('Hallo');
socket.sendText('Welt';
... wird daraus beim Server 'HalloWelt'.

Wie kann ich das Problem auf der Client-Seite vermeiden ?
B.z.w. wie kann ich abfragen ob der vorhergehende Text schon gesendet wurde und der Puffer leer ist ?

Ich bedanke mich schon mal im Voraus für eure Antwort.
mfg
Ralf
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Winsock socket.SendText

  Alt 27. Dez 2009, 14:42
Zuverlässig kannst du so etwas nur durch ein entsprechendes (selbst ausgedachtes?) Protokoll vermeiden.
Du musst dir also ein Format ausdenken was dir ermöglichst die Dinge auseinander zu halten.
In deinem Fall wäre es wohl das einfachste anstelle "Hallo" und "Welt" einfach "Hallo " und "Welt " (also mit nachfolgendem Leerzeichen) zu senden und das Leerzeichen als Trenner zu betrachten.
Im übrigen könnte es dir genau so passieren das Hallo nicht im ganzen ankommt sondern erst "Hal" und dann "lo". Unter Betrachtung all dieser Möglichkeiten ist ein Protokoll dringen angeraten. Denn wenn du nur "Hal" bekommst, weißt du das noch etwas folgenden muss weil das abschließende Leerzeichen fehlt.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Atretis

Registriert seit: 27. Apr 2009
Ort: Hückelhoven
4 Beiträge
 
#3

Re: Winsock socket.SendText

  Alt 27. Dez 2009, 14:55
Hi,
danke für deine Antwort.

Aber ob es zuverlässig beim Server ankommt spielt erstmal keine Rolle.

Gibt es eine Möglichkeit Clientseitig festzustellen ob der Sende-Puffer leer ist oder nicht ?

Nach dem Motto : Sende A -> warte bis A gesendet -> Sende B

mfg
Ralf
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Winsock socket.SendText

  Alt 27. Dez 2009, 14:58
nein gibt es nicht. Denn wenn du etwas sendest wird es in mehreren Packeten gesendet. Es kann also sein das die ersten Packete schon angekommen sind und die anderen noch gar nicht abgesendet wurden. Nur du als derjenige der weiß was er erwartet kann wissen ob da noch etwas hinterher kommen müsste.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Atretis

Registriert seit: 27. Apr 2009
Ort: Hückelhoven
4 Beiträge
 
#5

Re: Winsock socket.SendText

  Alt 27. Dez 2009, 15:07
Hi,
ich verstehe ja, was du mir sagen willst.

Das der Server nicht wissen kann was da noch an Daten kommt ohne Abschlusszeichen.
Das juckt mich aber erstmal nicht.

Beispiel :

Sende A
Warte 10 Sec
Sende B

Das kommt immer als A und dann als B beim Server an. (und wenn von 100mal, 1mal nicht auch egal)

Sende A
Sende B

Kommt immer als AB beim Server an.

Nun will ich das 'Warte 10 Sec' aus dem vorangegangenen Beispiel durch eine Abfrage ersetzen.
z.B.

Sende A
Wenn A gesendet (ob angekommen oder nicht ist egal)
Sende B

Da gibt es keine Möglichkeit ?
mfg
Ralf
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Winsock socket.SendText

  Alt 27. Dez 2009, 15:22
Bei folgendem Beispiel:

Sende A
Sende B

ist A ja bereits gesendet wenn "Sende B" aufgerufen wird. Nur wurde es noch nicht empfangen und/oder aus dem Puffer beim Empfänger gelesen.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Atretis

Registriert seit: 27. Apr 2009
Ort: Hückelhoven
4 Beiträge
 
#7

Re: Winsock socket.SendText

  Alt 27. Dez 2009, 15:31
Hi,
au man, ich dachte die ganze Zeit das die Daten sich im Sende-Puffer des Clienten sammeln...
und nicht im Empfangs-Puffer des Servers.

Das erklärt nun einiges.
Danke für deine Geduld.
mfg
Ralf
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Winsock socket.SendText

  Alt 27. Dez 2009, 15:35
Ich würde nicht darauf wetten, dass es so ist wie von mir beschrieben. Allerdings würde ich auch nicht auf eine von beiden Varianten vertrauen sondern immer im Hinterkopf behalten das beim nächsten Betriebssystemupdate sich da etwas geändert haben kann.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  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 17:06 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