Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Dateien Senden

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ] [ 3 ] [ 4 ] [ 5 ]
000
21.08.2005, 08:54 Uhr
Michi



Hallo,
Wie kann ich Dateien senden?(ich meine Lieder, viedeos etc.)
(mit Sockets)

Einfache nachrichten kann ich schon senden und erhalten, mit send() und recv()
Nur würde ich gerne wissen, wie ich Dateien senden und erhalten kann.

Ich benutze Windows

Vielen Dank im Vorraus,
Michi
--
_____________________________________
_____________Open Source_____________
___Das Wissen, gehört der Menschheit____
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
21.08.2005, 09:51 Uhr
Reyx
IT-fetischistischer Wurstsalat mit rostigem Berghorn
(Operator)


Du könntest die Datei binär einlesen, mit Base64 codieren und dann wie einen normalen String verschicken ...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
21.08.2005, 10:14 Uhr
Michi



Achso,
also gibt es keine köglichkeit es als Datei zu senden, oder?
ich werde es mal so probieren, danke
--
_____________________________________
_____________Open Source_____________
___Das Wissen, gehört der Menschheit____
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
21.08.2005, 10:30 Uhr
Skippy



so diese funktion sendet dateien ob bilder texte zip usw.

wenn du zusätzlich aber im programm die dateigröße brauchst musst du sie dir noch vorher auslesen diese funktion benötigt nämlich keine größenangabe



C++:
void Socket::SendFiles(const char *filename)
{
FILE *resource = NULL;
char buf[1024];
int sizeRead;

printf ( "file_found Server will send: %s", filename );

resource = fopen(filename, "rb");
if (resource == NULL)
{
  printf ( "not_found: %s", filename );
}
else
{

while(!feof(resource))
     {
          sizeRead=fread( buf,1, sizeof(buf), resource);
         send(s_, buf, sizeRead, 0);
      }
}
fclose(resource);
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
21.08.2005, 11:13 Uhr
Michi



Danke!
ICh hab eine frage dazu:
Bei "resouce=fopen(filname, "rb");" was bedeutet "rb"?
--
_____________________________________
_____________Open Source_____________
___Das Wissen, gehört der Menschheit____
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
21.08.2005, 12:03 Uhr
Michi



Ok,
funktioniert, danke nochmal

Aber wie ist das erhalten von dieser datei?
Das Geht doch nicht mit recv, oder?
MFG
Michael
Bitte helft mir
--
_____________________________________
_____________Open Source_____________
___Das Wissen, gehört der Menschheit____
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
21.08.2005, 13:03 Uhr
Skippy



@michi "rb" bedeutet

r= lesezugriff
b= zugriff binär daher es werden keine zeichen wie zeilenende konvertiert

wenn du in deinem programm die möglichkeit hast das z.b. ein bestimmter befehl zuerst kommt z.b. übertrage datei...
danach antwortet dein programm entweder mit true oder false


hab da mal was zusammengeschustert vielleicht hilfts dir wenigstens weiter hab also nicht getestet obs funktioniert die funktion speichert die datei gleich ab braucht also als paramter den pfad

void Socket::ReceiveFiles(const char *filename)
{
FILE *resource = NULL;
char buf[1024];
int sizeRead;



resource = fopen(filename, "rb");
if (resource == NULL)
{
printf ( "not_found: %s", filename );
}
else
{

while(sizeRead=recv(s_, buf, sizeof(buf), 0) >0)
{
fwrite( buf,sizeRead, 1, resource);
}
}
fclose(resource);
}
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
21.08.2005, 18:28 Uhr
Michi



Ok,
ich werde mir da mal was zurechtcoden
Danke nochmal...
Also das heißt ja, dass die Dateien in einen Binärencode umgewandelt werden, und dann in buf reingeschrieben werden.
wie kann ich dann nachher die datei in wieder in eine *.mp3 oder umwandelt und auf dem computer speichern?

Zudem:


Zitat:
void Socket::ReceiveFiles(const char *filename)

Welches parameter?
Das der datei die gesendet wird? Dann könnte ich ja gar nicht über das internet jemanden eine datei schicken, wenn er client is.

MFG
Michael
--
_____________________________________
_____________Open Source_____________
___Das Wissen, gehört der Menschheit____
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
21.08.2005, 20:48 Uhr
Skippy



ja du brauchst doch nen dateinamen unter welcher du das abspeichern willst

entweder der benutzer bestimmt den dateinamen oder der server sendet ihn mit

und die datei wird nicht umgewandelt deswegen ja das binäre lesen beider normalen ohne b wirden ein paar zeichen umgewandelt
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
22.08.2005, 00:23 Uhr
CDW



hm, also Base64 wäre schon übertrieben
einfach im binärmodus einlesen und senden. Wenn Du in dein Programm Server und Client integrierest, dann kann auch jeder mit dem Programm daten senden und empfangen. Was aber wichtig ist, das ist das richtige emfpange per recv - sie muss nämlich nicht alles auf einmal emfpangen und hier haben viele Leute schon ewig nach dem Fehler "es wird manchmal nicht alles übertragen!" gesucht.
www.fun-soft.de/showtopic.php?threadid=11914
--
EB FE
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ] [ 3 ] [ 4 ] [ 5 ]     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: