AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Client/Serververbindung arbeitet kurz und friert dann ein.
Thema durchsuchen
Ansicht
Themen-Optionen

Client/Serververbindung arbeitet kurz und friert dann ein.

Ein Thema von BlackJack · begonnen am 18. Jul 2006 · letzter Beitrag vom 23. Jul 2006
 
Benutzerbild von BlackJack
BlackJack

Registriert seit: 2. Jul 2005
Ort: Coesfeld
246 Beiträge
 
Delphi 2005 Personal
 
#6

Re: Client/Serververbindung arbeitet kurz und friert dann ei

  Alt 19. Jul 2006, 11:53
Zitat von Muetze1:
Die Sockets haben einen kleinen und begrenzten Buffer. Daher ist es nicht ratsam wissentlich Daten in einem OnRead nicht komplett auszulesen und zu warten bis die benötigte Menge an Daten empfangen ist. Es empfiehlt sich lieber einen Buffer selber an zu legen, alle Daten vom Socket in den Buffer zu schreiben (bzw. anzuhängen) und dann von vorne den Buffer durchgehen, interpretieren und schauen ob man genug empfangen hat. Dieser Teil kann immer nach einem erfolgtem OnRead ausgeführt werden. Nach erfolgreicher Interpretation einfach den Teil vorne vom Buffer entfernen. Ich habe dazu immer einen TMemoryStream verwendet und es klappte soweit alles recht gut. Beim Server muss man dann natürlich einen MemoryStream pro Client vorhalten. Ein grundlegendes Beispiel dazu könnte man sich in dem Chat auf meiner HP anschauen.
also quasi ne Warteschlange? jo ich glaube das ist ne gute idee, so werde ich das mal versuchen.
aber dann kann ich mir ja auch die eigene Methode zum Empfangen (ReceiveData) sparen, oder? weil wenn ich im OnRead einfach mit ReceiveText auslese, dann gibt er mit doch automatisch alles zurück, was der Socket grade vorliegen hat, und das kann dann einfach an die Warteschleife anhängt werden.
und ist damit dann nicht auch automatisch das Thread-Problem, das du beschrieben hast, gelöst?

Zitat von Muetze1:
Ein grundlegendes Beispiel dazu könnte man sich in dem Chat auf meiner HP anschauen.
Ich möchte es aber vorher gerne alleine hinbekommen

edit:
ach ja was haltet ihr von folgendem "Protkoll" für den austausch von Nachrichten/daten:
"lrt" ; 1 Byte für die Länge des Kommandos ; Kommandostring ; 4 Bytes für die Länge der eventuell folgenden Daten.
See my shadow changing, stretching up and over me.
Soften this old armor. Hoping I can clear the way
By stepping through my shadow, coming out the other side.
Step into the shadow. Forty six and two are just ahead of me.
  Mit Zitat antworten Zitat
 


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 11:37 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