Netzwerk Anwendung mit send() und recv()

  • Themenstarter Themenstarter MrCodeMaster
  • Beginndatum Beginndatum
@sheel: Das kann gut sein, aber ich hab auch mal mit system() angefangen, bis ich gemerkt habe, das ist nicht wirklich das wahre. Zm einsteigen ganz gut, aber mehr auch nicht.

@MrCodeMaster:

C++:
string stDateipfad = "C:\\";
string stOrdnerliste;

WIN32_FIND_DATA FindData1;  //Für die Ordneranzeige
HANDLE hFile1;

stDatei_Dateipfad = stDatei_Dateipfad + "\\*.*";  //Das muss immer hinter den Ordnernamen, in den du "reinschauen" willst
//Bedeutet, er soll Ordnernamen und Dateien anzeigen, die irgendwie heißten mit irgendeiner Endung
//Du kannst auch \\*.exe machen, dann kommen nur Dateinamen mit der Endung .exe

hFile1 = FindFirstFile(stDateipfad.c_str(), &FindData1);

if(hFile1 == INVALID_HANDLE_VALUE)
{
    //Fehler, z.B. Ordner existiert nicht
}
else
{
    stDatei_Ordnerinhalt + FindData1.cFileName + "\n";
    
    while(FindNextFile(hFile1, &FindData1))
    {
        stOrdnerliste = stOrdnerliste + FindData1.cFileName + "\n";
    }
}

grüße
 
Irgendwie liegt da ein Missverständnis vor: Ich habe dir vorher zugestimmt, dass man statt system eher FindFirstFile etc verwenden sollte.

Zum Code: Im Pfad ist ein überflüssiger Backslash
Und bei *.* kommt (auf manchen Systemen?) auch "." und ".." mit;
je nach Verwendungszweck sollte man die abfangen.

Gruß
 
Das hat super funktioniert. Danke. Jetzt hab ich noch eine Frage: und zwar wie kann ich es jetzt einrichten, dass mein Client die Daten die ich ihn einlesen lass(log.txt) wieder zu meinem server schicken?

Muss ich da das Gleiche machen wie bei meinem Server?
 
Zuletzt bearbeitet von einem Moderator:
@Sheel: Ich hab dir schon auch zugestimmt, mit dem was du geschrieben hast :-).

@MrCodeMaster: Ich weiß nicht genau wie du dass meinst. Der Client liest einen Ordnerinhalt ein und diesen willst du dem Server schicken oder? Dann musst du mit der strcpy()-Funktion das in deine cDaten reinschreiben und einfach senden. Oder auch umgekehrt. Du kannst alle möglichen char-Inhalte hin und her senden.

grüße
 
@Sheel: Ich hab dir schon auch zugestimmt, mit dem was du geschrieben hast :-).

@MrCodeMaster: Ich weiß nicht genau wie du dass meinst. Der Client liest einen Ordnerinhalt ein und diesen willst du dem Server schicken oder? Dann musst du mit der strcpy()-Funktion das in deine cDaten reinschreiben und einfach senden. Oder auch umgekehrt. Du kannst alle möglichen char-Inhalte hin und her senden.

grüße
 
Ja genau das will ich meine Frage war eigentlich ob ich bei meinem Client einen neuen Socket erstellen muss oder ich die vorhandenen verwenden kann.
 
Du kannst immer den selben Socket verwenden. Das ist deine Verbindung zwischen Client und Server. Über die kannst du Daten vom Client zum Server und umgekehrt schicken.

grüße
 
Das heißt, dass ich beim Client den acceptedSocket() zum Senden nehmen muss und beim Server den Socket s zum Empfangen nehmen muss oder?
 
Der Client hat im Regelfall keinen acceptedSocket.

-Der Server hat einen Socket A, mit bind und listen etc
-Der Client macht einen Socket B und damit ein connect zum Server
-Der Server bekommt wegen diesen connect mit accept aus A einen Socket C heraus.
Senden/Empfangen kannst du jetzt über B und C
A ist nur da, um bei connect/accept weitere Sockets auszuspucken.
Bei mehreren Clients bekommst du dann pro Client einen Socket heraus, zum Senden/Empfangen zum jeweiligen Client.
 
Sorry hab mich verschrieben mein eh den Server.

Wie heißen dann die neuen Sockets****

Also so sieht mein Server aus(nur mal ohne Code):

Sockets hat er acceptSocket u. connectedSocket

Mein Client: Socket s
 
Zurück