Verständnisfrage Datenübertragung mit Winsock
-
Hi
habe leider kein Netzwerkforum gefunden, also frag ich hier
So, ich habe mit der Datenübertragung von kleinen Texten mit Winsock begonnen und das klappt auch gut. Jetzt möchte ich den nächsten Schritt wagen und alle möglichen Dateien (Bilder, Filme...) übers Netzwerk schicken. Dazu möchte ich auch einen Fortschrittsbalken anzeigen.
Jetzt die Frage, wie verschicke ich solche Dateien, finde nur Funktionen zum Verschicken von Strings.
Dazu habe ich auch schon gegoogelt und gelesen, dass man die Dateien umwandeln muss (Wie?) dann aufteilen, jedes Teil in ein Array laden und Stück für Stück schicken.
Das mit dem Fortschrittsbalken ist kein Problem, dazu kann ich am Anfang dann ja die Größe der Datei übertagen. Aber ich habe keine Ahnung wie ich das Array am Ende beim Empfänger dann wieder zu der beispielsweise Film Datei mache oder wie das mit dem Umwandeln am Anfang und am Ende überhaupt funktioniertVielleicht habe ich auch alles falsch verstanden udn es gibt einfache lösungen
Wäre auf jedenfall nett, wenn mir das jemand erklärt und sagt wie es funktioniert und auch in der praxis gemacht wird
Danke
-
?!
WinSocks send() und recv() arbeiten mit Bytes? Darüber kannst du senden was du lustig bist.
-
nun ja , wie in dem tutorial beschrieben nur benutzt du buf nicht fuer text sondern fuer rohdaten, sprich dein file welches du verschicken willst. :
strcpy(buf,"Hallo wie gehts?"); rc=send(s,buf,9,0);anstatt strcpy mit ReadFile den buf mit daten fuellen und dann senden.
zum empfaenger sollten vorher informationen ueber groesse ,name usw. geschickt werden.
nur waere es nicht schlecht zu wissen was genau du benutzt ? async ? tcp oder udp ? im netzwerk oder auch uebers inet ?
wenn du groesseres vorhast waere ein blick auf das ftp protokoll nicht verkehrt, auch wenn es etwas eigen in der port vergabe ist, die art und weise wie die komunikation zwischen server und client stattfindet ist ein guter ansatz, gerade wenn es ueber das inet gehn soll und es sich um groessere datein wie filme handeln soll.mfg donny

-
danke erstmal
ich meinte bytes, habe texte geschickt, daher meinte ich texte
bin mit UDP am testenda lautet die Funktion
int sendto ( SOCKET s, const char FAR * buf, int len, int flags, const struct sockaddr FAR * to, int tolen );anstatt strcpy mit ReadFile den buf mit daten fuellen und dann senden
genau das habe ich gesucht, ReadFile macht die umwandlung also
.
Muss ich beim Empfänger nach der Übertragung die Datei dannn per WriteFile wieder ins original wandeln?bin erstmal im lan am schicken, welches protokoll ist da denn am besten geeignet?
-
> Muss ich beim Empfänger nach der Übertragung die Datei dannn per WriteFile wieder ins original wandeln?
Ja, klar, wenn du dort wieder eine Datei haben willst musst du einen Datei draus machen (?!?).
> bin erstmal im lan am schicken, welches protokoll ist da denn am besten geeignet?
TCP/IP. Bei UDP müsstest du berücksichtigen dass die einzelnen Pakete in der falschen Reihenfolge ankommen könnten, und nichtmal garantiert ist dass irgendwas ankommt.
-
ok, danke an alle
dann werde ich das mal mit TCP testen