AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Dateien per Server/Clientsocket versenden
Thema durchsuchen
Ansicht
Themen-Optionen

Dateien per Server/Clientsocket versenden

Ein Thema von Neuni · begonnen am 27. Apr 2004 · letzter Beitrag vom 28. Apr 2004
Antwort Antwort
Seite 1 von 3  1 23      
Neuni

Registriert seit: 25. Feb 2004
815 Beiträge
 
Delphi 7 Personal
 
#1

Dateien per Server/Clientsocket versenden

  Alt 27. Apr 2004, 14:33
Hallo zusammen...folgendes Problem.

Ich hab hier im Forum schon geguckt, aber nur beispiele und themen bezüglich IdTCP gefunden...
mein Problem ist, dass Indy irgendwie nicht richtig läuft, und dass ich lieber Serversocket bzw. Clientsocket gebrauchen würde.
Hat jemand sowas schonmal gemacht, oder hat jemand ne Idee, wie man das ganze machen könnte?

Danke schonmal im vorraus
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#2

Re: Dateien per Server/Clientsocket versenden

  Alt 27. Apr 2004, 14:55
Ja, ich hab was gemacht, aber durch einen Festplattencrash gibts den code nicht mehr. In den Grundzügen habe ich es ohne Streams gelöst, also so:
Dateitransfer Server->Client
S=Server, C=Client

Hier eine Liste was gesendet wird
S: Dateigröße in Bytes
C: Ok
S: Sende Block <Nummer> mit <Größe> Bytes
C: Send
S: Daten
C: verifiziert Größe, falls Größe stimmt, Ok schicken, ansonsten Resend
S: Sendet im Notfall den Block nochmals, andernfalls geht er zum nächsten

Am Ende:
S: EoF
C:Ok

So müsste die Kommunikation gehen, die Daten kannst du mit SendBuffer senden, versuch mal, die Kommunikation aufzubauen, falls du Probleme hast helfe ich gerne
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Neuni

Registriert seit: 25. Feb 2004
815 Beiträge
 
Delphi 7 Personal
 
#3

Re: Dateien per Server/Clientsocket versenden

  Alt 27. Apr 2004, 14:58
Wofür braucht der Client denn die dateigröße in Bytes???
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#4

Re: Dateien per Server/Clientsocket versenden

  Alt 27. Apr 2004, 15:01
Um am Ende verifizieren zu können, dass alles gepasst hat, denn es könnte ja auch die Blockgröße durch einen Übertragunsgfehler geändert werden, dabei gehen zufällig auch noch die gleiche Anzahl Bytes verloren, und die Datei ist fehlerhaft. Laut Murphy ist dies alles möglich. Weiß der Client die Größe der Datei, kann er alles verifizieren.
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#5

Re: Dateien per Server/Clientsocket versenden

  Alt 27. Apr 2004, 15:12
Moin!

Ausserdem muss er ja wissen wieviel Bytes er aus dem Stream lesen muss bzw. erwarten kann - sonst weiss er ja nicht, wann Schluss ist...

MfG
Muetze1
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#6

Re: Dateien per Server/Clientsocket versenden

  Alt 27. Apr 2004, 15:13
Ja, das wäre die jeweilige Blockgröße, aber die Gesamtdateigröße muss am Ende mit der Summer der Blockgrößen zusammenstimmen, gleich wie die Blockgröße mit der Anzahl von Nutzbytes im Block übereinstimmen muss. Die Anzahl Bytes, die gelesen werden muss gibt mir auch das Socket zurück.
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#7

Re: Dateien per Server/Clientsocket versenden

  Alt 27. Apr 2004, 15:21
Moin!

Zitat von alcaeus:
Die Anzahl Bytes, die gelesen werden muss gibt mir auch das Socket zurück.
Du meinst ReceiveLength - ja, ok. Aber damit weisst du immernoch nicht, wann Schluss ist. Auch das du die Datei in Blöcke unterteilst muss nicht sein, da die Blöcke meist eh nicht als ein solcher Block beim Empfänger ankommen sondern meistens noch weiter geteilt - und es gibt auch nirgends eine Garantie für die zusammenhängende Blöcke...

MfG
Muetze1
  Mit Zitat antworten Zitat
Benutzerbild von fiasko
fiasko

Registriert seit: 10. Dez 2002
Ort: Dresden
506 Beiträge
 
#8

Re: Dateien per Server/Clientsocket versenden

  Alt 27. Apr 2004, 15:23
Ähm, wozu nehmt ihr dann eigentlich noch das TCP-Protokoll? Das ist für die Transportsicherung zuständig und sorgt dafür das alles korrekt läuft. Wenn die Verbindung nicht abbricht kommt beim Empfanger alles genau so raus wie es der Sender reingeschickt hat. Die Serversocket sind aber nicht grad tolle Komponenten scheinen manchmal Müll zu machen, dafür würde ich lieber direkt die WinSock API ansprechen.
Thomas Liske
Posts comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#9

Re: Dateien per Server/Clientsocket versenden

  Alt 27. Apr 2004, 15:24
Ich habe das ganze einmal probiert, bei einer internet Blocklänge von mehr als 8 KB ging nichts mehr weiter..., 8KB war bei mir das Maximum, deswegen die Blöcke. Außerdem bist du als Anwendungsprogrammierer dafür zuständig, dass die Netzwerkkarte die Daten versandbereit enthält. Der Karte eine 100 MB-Datei vor die Füße werfen nenne ich nicht gerade versandbereit...
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von fiasko
fiasko

Registriert seit: 10. Dez 2002
Ort: Dresden
506 Beiträge
 
#10

Re: Dateien per Server/Clientsocket versenden

  Alt 27. Apr 2004, 15:30
Zitat von alcaeus:
Außerdem bist du als Anwendungsprogrammierer dafür zuständig, dass die Netzwerkkarte die Daten versandbereit enthält. Der Karte eine 100 MB-Datei vor die Füße werfen nenne ich nicht gerade versandbereit...
Quark, da sind die Leute die den TCP-Stack geklaut haben dafür zuständig
Thomas Liske
Posts comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz