problem datei senden mit winsock



  • so ich habe mir ne kleine funktion zusammengebastelt um dateien zu senden

    mein problem mit textbasierte dateien sendet er wohl einwandfrei wollte nun zum testen aber ne 30Mb rar datei senden

    aber nix da ich bekomme als ausgabe nur ein paar sonderzeichen und dann ist schluss

    hier mal die gesamte funktion

    hab leider keine ahnung was ich verhunzt habe(hoffe inständig das es an dieser funktion liegt)

    void Socket::SendFiles(const char *filename)
    {
     FILE *resource = NULL;
     char buf[1024];
    
    printf ( "file_found Server will send: %s", filename );
    
     resource = fopen(filename, "r");
     if (resource == NULL)
     {
      printf ( "not_found: %s", filename );
     }
     else
     {
      fgets(buf, sizeof(buf), resource);
      while (!feof(resource))
       {
        send(s_, buf, strlen(buf), 0);
        fgets(buf, sizeof(buf), resource);
       }
     }
     fclose(resource);
    }
    


  • fopen(filename, "rb");



  • ausserdem fread statt fgets benutzen...



  • hat jemand nen gutes beispiel zu freads finde nämlich nur beispiele wo ich nen char* die größe der datei zuweise und dann alles rein kopieren

    bruach das aber in der art wie ich die funktion weiter oben auch habe das er die datei in "buffer" große stückchen holt bis "eof"damit ich sie dann senden kann



  • ab ins C Forum ➡



  • das gehört nicht ins ansi c forum?

    fread( buffer, sizeof(buffer), 1, fp)



  • so nach dem ich mich von meinem Herzinfarkt erholt habe den ich bekamm weil ich ja auf die idee kam den inhalt der zu sendenden datei per printf ausgeben zu lassen und bei ner 30mb datei kommt ja denn doch das eine oder andere mal /a vor (PIEP PIEP ....)und das um 23 uhr .

    hier mal die fertig? umgebaute funktion

    EDIT: habe das nochmal editiert, hier mal die aktuelle version

    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)-1, resource);
    
              buf [sizeRead+1] = '\0';
    
             send(s_, buf, sizeRead, 0);
          }
     }
     fclose(resource);
    }
    


  • Das neue Herzinfarkt mittel STRG+C 😉 🤡



  • Reset-Knopf


Anmelden zum Antworten