AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Ist der Server zu "schnell"?
Thema durchsuchen
Ansicht
Themen-Optionen

Ist der Server zu "schnell"?

Ein Thema von NightroadSora · begonnen am 28. Mär 2011 · letzter Beitrag vom 30. Mär 2011
Antwort Antwort
alzaimar
(Moderator)

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

AW: Ist der Server zu "schnell"?

  Alt 28. Mär 2011, 21:36
Umschließe den Quellcode bitte mit Delphi-Tags.
Dazu einfach den Quelltext markieren und auf das Delphi-Icon klicken. Danke!

Zu deinem Problem: Die Daten purzeln nicht so aus dem Socket, wie Du sie hereinschüttest. Es kann also sein, das Du nur immer mal wieder ein Byte bekommst. Du musst selbst sicherstellen, das Du alle Daten bekommst.

Du kannst zuerst die Anzahl der zu übertragenen Bytes schicken, z.B. als INT und danach die Daten selbst.

Auf der Empfangsseite liest Du zuerst 4 Bytes, dekodierst die in einen INT und anschließend wartest Du, bis alle Bytes da sind. Erst dann kannst Du die Daten interpretieren.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
NightroadSora

Registriert seit: 27. Mär 2011
11 Beiträge
 
#2

AW: Ist der Server zu "schnell"?

  Alt 28. Mär 2011, 21:55
Kannst du mir mal bitte n beispiel geben wie das aussehen soll? Ich hab grade echt keinen Dunst wie ich das machne soll, ich meine was soll ich da mitm INT? Das is noch nur die Größe des Datensatzes was soll mir das bringen?
und wenn du selbst sagt die Daten kommen nich so raus wie ich sie reinsende, wie komm ich denn dann immer an den Wert Datei?
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#3

AW: Ist der Server zu "schnell"?

  Alt 28. Mär 2011, 22:25
Soweit ich das verstanden habe, wird OnClientRead ausgelöst, wann immer der Client Daten sendet (bereits wenn dazu bereit ist), nicht nur wenn alle Daten gesendet wurden. Das erste Auslösen des Ereignis kann also bereits sein, wenn der Lesepuffer noch leer ist

Wenn IDMSG sowieso immer ein Integer (als String) ist, dann reicht auch ein EOD Zeichen (z.B. ein Punkt). Auf den warten und vorm StrToInt ausschneiden.

PS: alzaimars Vorschlag wäre sinnvoller, wenn Du Dir gleich eine allgemeine Funktion schreibst, die einen Datenblock liest. Du scheinst ja mehrere unterschiedliche Datenblöcke zu senden.

Geändert von Satty67 (28. Mär 2011 um 22:40 Uhr)
  Mit Zitat antworten Zitat
NightroadSora

Registriert seit: 27. Mär 2011
11 Beiträge
 
#4

AW: Ist der Server zu "schnell"?

  Alt 28. Mär 2011, 22:47
Jaaa okay kann ja sein dass das mehr Sinn machen würde, aber WIE schreibe ich so eine Funktion?
WIe lese ich so einen Datenblock denn aus?!
Das wurde in keinem der 3 Netzwerktutorials erläutert, die ich gelesen habe, da haben se einfach das Record reingehaun, ausgelesen so wie ichs gemacht habe, drauf zugegriffen und die ganze Sache lief!

Wieso gehts bei mir nicht, was is bei mir anders?

Kann ich denn auch SendText und Sendbuf gleichzeitig iwie verwenden? Bei mir läufts ja im Client programm nacheinander...
  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 01:02 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-2025 by Thomas Breitkreuz