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
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

AW: Ist der Server zu "schnell"?

  Alt 30. Mär 2011, 06:00
Wenn die Daten verschickt werden, ermittelt der Sender die Größe der Nachricht (ein Integer) und schickt diesen als erstes auf die Reise. Direkt danach die Daten.
Der Empfänger liest jetzt erst den Integer aus dem Buffer und weiß wie groß die Nachricht ist und empfängt - bzw. Wartet bis alle Daten da sind - die Nachricht.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von wicht
wicht

Registriert seit: 15. Jan 2006
Ort: Das schöne Enger nahe Bielefeld
809 Beiträge
 
Delphi XE Professional
 
#2

AW: Ist der Server zu "schnell"?

  Alt 30. Mär 2011, 10:03
Code:
type
  TForm1 = class(TForm)
  private
    LaengeNaechsteNutzdaten: Integer;
  end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
  Info: TInfo;
begin
  // Gibt es genug, um die Länge auszulesen?
  if (LaengeNaechsteNutzdaten = 0) and (Socket.ReceiveLength >= SizeOf(LaengeNaechsteNutzdaten)) then
    // Dann auslesen
    Socket.ReceiveBuf(LaengeNaechsteNutzdaten, SizeOf(LaengeNaechsteNutzdaten));

  if (LaengeNaechsteNutzdaten > 0) and (Socket.ReceiveLength >= LaengeNaechsteNutzdaten) then
  begin
    // Wenn der Puffer die Länge der Nutzdaten erreicht hat, auslesen
    Socket.ReceiveBuf(Info, LaengeNaechsteNutzdaten);

    // Daten verarbeiten...
    MachWasMitDaten(Info);

    LaengeNaechsteNutzdaten:= 0;
  end;
end;
Weil das TInfo ja immer gleich groß ist, kann man sich den Integer theoretisch auch sparen, aber so müsste es aussehen denke ich...
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"

Geändert von wicht (30. Mär 2011 um 12:06 Uhr) Grund: Bugfix im Code
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Ist der Server zu "schnell"?

  Alt 30. Mär 2011, 11:35
Allerdings sollte man fairerweise dazu bemerken, dass dieses nur bei einem Client sauber funktioniert.

Somit würde man pro Socket eine solche Variable (LaengeNaechsteNutzdaten) benötigen
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  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 13:42 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