2016-03-21 11 views
0

Ich versuche, einfache TCP-Client und Server-Programm zu schreiben. Das Serverprogramm muss die Liste der Dateien in seinem Standardverzeichnis an das Clientprogramm senden. Der Client wählt dann eine Datei aus, und der Server gibt den Inhalt dieser Datei zurück. Ich habe alle grundlegenden Verbindungen, aber ich bin fest, wie man die Liste der Dateien an den Client bekommt. Irgendwelche Ideen? TIASo senden Sie eine Liste von Dateien im Standardverzeichnis an den Client vom Server

+0

[Verwenden 'send'] (http://linux.die.net/man/2/ senden). Stellen Sie sicher, dass Sie Ihr Kommunikationsprotokoll so definieren, dass der Empfänger weiß, wann er die gesamte Nachricht gelesen hat und lesen kann. Am einfachsten ist es, die Länge der Nachricht vor dem Senden der Nachricht zu senden oder das Ende der Nachricht mit einem Terminator wie NULL zu markieren. – user4581301

+0

ja ich bin vertraut mit der Funktion send(), aber wie würde ich die Liste der Dateien in den Puffer bekommen, um über send() zu senden? – jynx678

+0

Das ist leider Betriebssystemabhängig. Antwort 2 hier sollte helfen: http://stackoverflow.com/questions/612097/how-can-i-get-the-list-of-files-in-a-directory-using-c-or-c – user4581301

Antwort

0

die Liste der Dateien in einem Verzeichnis zu erhalten ist im Moment sehr systemabhängig:

Zum Glück gibt es boost::filesystem, die ein tragbares directory iterator bietet.

Die gute Nachricht ist, dass filesystem bald der C++ - Standardbibliothek beitreten wird. Einige Compiler, wie MSVC und gcc, bieten sie bereits als experimentelle Erweiterung und es ist sehr, sehr nahe zu steigern:

path dir { "." }; 
for (auto& p : recursive_directory_iterator(dir)) { 
    cout << "Sending "<<p<<endl; // dir_entry using recursive browsing 
    //... todo: send file 
} 
Verwandte Themen