AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Es kommen zu wenig bytes an
Thema durchsuchen
Ansicht
Themen-Optionen

Es kommen zu wenig bytes an

Ein Thema von Saiz · begonnen am 23. Sep 2010 · letzter Beitrag vom 24. Sep 2010
Antwort Antwort
Saiz

Registriert seit: 23. Sep 2010
2 Beiträge
 
#1

AW: Es kommen zu wenig bytes an

  Alt 23. Sep 2010, 19:59
Vielen Dank schon mal für die Antworten.

Aber das verstehe ich nicht ganz. Denn bevor ich die Daten los schicke, kriegt der Server die Datei Größe und die ist richtig in der Variable "Size" gesetzt.
Ich empfange so lange Daten bis "recvsize" größer oder gleich "Size" ist.

Irgendwie stehe ich auf dem Schlau

Ich habe gedacht es geht so:

1. Client schickt Server Filename und Größe
2. Server senden Nachricht zurück mit Commando -> Schick mir die Datei
3. Client öffnet Datei und fängt an 4095 Bytes nach einander zu versenden.
4. Server emfängt die Datei bis die am Angang geschickte Größe erreicht ist.
5. Server schließt Datei.

Was habe ich falsch verstanden?
Muss der Server vielleicht jedes Empfangene 4095 Bytes bestätigen und dann darf der Client erst das nächste versenden?
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

AW: Es kommen zu wenig bytes an

  Alt 23. Sep 2010, 20:28
Hmm, irgendwie finde ich in deinem Quelltext nirgends die Stelle an der du die Dateigröße verschickst. Ich sehe nur das du die Datei blockweise liest und versendest. Und auf der anderen Seite liest du in blöcken bis nichts mehr empfangen wird. Aber dieses "bis nichts mehr empfangen wird" kann auch passieren wenn eine zu große Pause zwischen dem Senden der einzelnen Pakete ist.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#3

AW: Es kommen zu wenig bytes an

  Alt 23. Sep 2010, 23:15
Denn bevor ich die Daten los schicke, kriegt der Server die Datei Größe und die ist richtig in der Variable "Size" gesetzt.
Ich empfange so lange Daten bis "recvsize" größer oder gleich "Size" ist.
Ne eben nicht. RecvSize gibt dir nur die Größe des Buffers, in der sich die Daten die angekommen sind UND noch am ankommen sind ZU DEM Zeitpunkt, zu dem diese funktion aufgerufen wird, zurück.
Also zuvor die Größe der Datei - wie schon vorhin beschrieben - schicken und solange lesen, bis die Anzahl der empfangenen Bytes = 4(Größe der Datei->Filesize) + FileSize ist
(^Bei Client & Server)

Edit: Ok, habs mir mal etwas angesehen -> derselbige Fehler kann auch dann auftreten, wenn "OK" empfangen wird.
Dh. Es kann wie gewollt folgendes ankommen -> "OK" - "OK" - "OK" ODER EBEN AUCH
zb. soetwas wie das hier "OK" "O" "K" "OKO" "K" ... (oder noch längere Zeichenketten..)

MfG
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG

Geändert von Aphton (23. Sep 2010 um 23:21 Uhr)
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

AW: Es kommen zu wenig bytes an

  Alt 24. Sep 2010, 10:47
Muss der Server vielleicht jedes Empfangene 4095 Bytes bestätigen und dann darf der Client erst das nächste versenden?
Nein muss er nicht.
Der Sender kann seine Daten einfach raushauen und braucht dazu keine Bestätigung durch den Empfänger.
Während der Filetransfer läuft braucht keine Rückmeldung in Form von "OK" oder Ähnliches durchgeführt werden.

Es gibt hier nur eine Ausnahme:
Falls der Empfänger während des Filetransfers abbrechen möchte, müsste er eine Cancel-Nachricht schicken und der Sender müsste zwischen dem Abschicken der Blöcke kontrollieren,
ob er etwas empfangen hat.
Diese Feature würde ich aber auf später verschieben.
Andreas
  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 18: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