Senden eines Strings Netzwerkprogrammierung



  • Hi,

    ich habe mir ein C Server-Client Programm geschrieben. So weit alles in Ordnung, ich habe nur ein Problem mit der Anwendung, die ich implementieren möchte.

    Ich habe ein Server und ein Client Programm und zwei Befehle, mit denen ich eine Textdatei vom Server holen, bzw. an den Server senden will. Die Befehle haben folgende Syntax:

    "get <dateiname> server" vom Server holen
    "put <dateiname> client" an Server senden

    Mein Problem besteht darin, dass ich einen variablen Dateinamen angeben möchte. Da ich aber beim Server die Befehle mittels

    if (strcmp(inBuf, "get datei.txt server") == 0)
    

    abfrage, weiß ich nicht, wie ich einen variablen Namen mitgeben bzw. abfragen soll (momentan habe ich den Dateinamen fest programmiert).

    Die Befehle lese ich momentan mit einem

    fgets(message, 200, stdin);
    

    ein. Und sende diese mit

    send(stcp, message, strlen(message), 0)
    

    .

    Ich hatte anfänglich überlegt, ob ich den String im Server Programm nicht einfach zerteile und den Dateinamen raus ziehe, jedoch kann ich meine if-Abfrage dann nicht mehr verwenden, da ich in diesen dann den variablen Dateinamen hinzufügen müsste.

    Vllt hat jemand eine Idee.

    Danke. Gruß

    cinematix



  • cinematix schrieb:

    Ich hatte anfänglich überlegt, ob ich den String im Server Programm nicht einfach zerteile und den Dateinamen raus ziehe, jedoch kann ich meine if-Abfrage dann nicht mehr verwenden, da ich in diesen dann den variablen Dateinamen hinzufügen müsste.

    Dieses if mit dem Dateinamen drin brauchst du doch gar nicht mehr.
    Du musst doch nur auf das get reagieren, den Dateinamen danach extrahieren und mit dem dann arbeiten.

    Und fgets speichert das abschließende '\n' mit ab.
    Wenn du es nicht selber raus nimmst, wird es mitgesendet.



  • Hi,

    Wenn ich nur auf das get reagiere, dann ist nicht mehr sichergestellt, dass auch wirklich der ganze Befehl eingegeben wurde. D.h. wenn ich nur "get <dateiname>" sende, ist der Befehl nicht vollständig, wird aber trotzdem als "get <dateiname> server" behandelt.

    Das mit dem fgets habe ich gelöst, das '\n' lösche ich aus dem string.



  • ...


Anmelden zum Antworten