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
Antwort Antwort
Benutzerbild von BlackJack
BlackJack

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

Re: Client/Serververbindung arbeitet kurz und friert dann ei

  Alt 19. Jul 2006, 13:22
Zitat von Muetze1:
(Tipp: Schau dir die Eigenschaft Data der TCustomWinSockets an).
hmm so wie ich das in der hilfe verstehe zeigt Data auf einen Block, der Infos zu der jeweiligen Socketverbindung speichert. allerdings steht in der Delphi-hilfe sonst nicht viel dazu, wo kann man da denn mehr erfahren?

Zitat von Muetze1:
Andere Möglichkeit die mir hier gerade dabei einfällt:

Delphi-Quellcode:
procedure OnReceive:
begin
  MemoryStream.Position := MemoryStream.Size;
  MemoryStream.Size := MemoryStream.Size + Socket.ReceiveLength;

  Socket.ReceiveBuf(MemoryStream.Memory^, Socket.ReceiveLength);
End;
solle das dann nicht so aussehen: Socket.ReceiveBuf(Pointer(Integer(MemoryStream.Memory) + OldSize)^, Socket.ReceiveLength); weil so wie ich das verstanden habe zeigt Memory auf den Anfang der Daten, aber ich will ja ans Ende anhängen.


Zitat von Muetze1:
Wie wäre es einfach nach der Kennung (die du später zum neu-synchronisieren verwenden kannst) 4 Bytes zu senden mit der Gesamtlänge? Dann könnte nämlich Server sowie Client bei unbekannten Kommandos diese überspringen - weil er zwar nicht weiss wie er sie handeln kann, aber überspringen kann er sie, da er ihre Gesamtlänge kennt.
dann müssten aber auch wieder die Methoden zum Auslesen aus dem MemoryStream bescheid wissen, welche Kommandos es gibt und welche falsch sind. Ich wollte es eigentlich so machen, dass ich ne Funktion hab, die das Kommando ausliest (vorher Kennung checken etc) und die eventuell folgenden Daten mit zurückgibt. und die aufrufende Methode bekommt dann halt das Kommando und muss selber entscheiden, ob sie was damit anfangen kann.

und kann man das so machen dass nach dem Auslesen aus dem MemoryStream alles rigoros relöscht wird, was nicht mit "lrt" beginnt? weil sonst pack ich mir den MemoryStream ja eventuell immer voller aber lese nie was draus aus.
(apropos: wie löscht man am schlauesten die ersten n bytes aus dem MemoryStream, ohne die gesamten restlichen Daten kopieren zu müssen?)
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
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:34 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