Frage zu Filetransfer

Hallo

Ich würde mal gerne wissen wie ich mit c++ am besten eine Datei von einem Rechner auf den anderen bekomme.
Eine funktionierende Server-Client Verbindung läuft schon allerdings kann ich nur Strings übertragen
Als Beispiel eine send-Funktion von mir:

Code:
int client::sendData (const char *sendBuffer)
{
    long int counter;
    long int bufferLength=strlen(sendBuffer);
    
   if (buildConnection()==false) {return -1;}
   counter=send(connectedSocket, sendBuffer, bufferLength,0);
   if (counter==SOCKET_ERROR)
    {
        cout<<"Fehler: send-Funktion"<<endl;
        return -1;
    }
    cout<<"System: "<<counter<<" Zeichen gesendet!"<<endl;
    return 0;
}

wie man sehen kann wird der Funktion der zu sendende String übergeben.

Ich hab mir jetzt überlegt das man jede Datei öffnen könnte, zeilenweise auslesen, am anderen Ende eine neue Datei mit gleichem Namen und gleicher Erweiterung zu erstellen und die empfangenen Zeichenketten zeilenweise wieder hineinschreiben.

Aber irgendwie kann das doch nicht der Weisheit letzter Schluß sein? X(
Ich weiß das C++ sehr Basic ist aber das is mir doch ein bissel zu basic.
Gibt es da nicht einfachere Wege bzw. fertige bibliotheken die man einbinden kann?
Ich hab dazu leider nix gefunden

videlius
 
Ich denke mal, dass es fertige ftp libraries gibt, die du entsprechend benutzen kannst.
 
lass einfach eine datei in ein array einlesen und schicke dieses dann als string ;)
am besten mit malloc und gegen speichermängel gerüstet zu sein.

Hier mal ein beispiel um die Datei in ein array zu bekommen

char *array = NULL;
FILE *fp;
int i = 1;
...
...

fp = fopen("DATEINAME","r");
array=(char*)malloc(sizeof(char));
while((array[i-1]=getc(fp))!=EOF)
{
i++;
array=(char*)realloc(array,sizeof(char)*i);
}
fclose(fp);
array[i-1]='\0';
...

und dann "array" als string versenden.
Klugerweise schiebst du das file am anderen ende ähnlich in ein array und printest es aus oder schreibst es in eine Datei. Wenn du den dateinamen noch übermittelst hast du den dann sogar mit dabei :)

mfg Thomas
 
Zurück
Oben