Partage
  • Partager sur Facebook
  • Partager sur Twitter

Taille du buffer avec les sockets

    5 août 2019 à 15:12:29

    Bonjour depuis quelque temps je heurte sur un probleme, je develope une aplication qui transfert des capture d'ecran et aussi des fichiers 

    quand je test mon aplication en locale je peux mettre la longeur du buffer a 1024 sans probleme mais dés que je le teste a distance l'image reçu est corrompu je suis sous windows 10sur les deux machines j'utilise codeblock

    serveur

                printf("\nname of the file to upload:\n-");
                Sleep(500);
                lire(buffer,MAXl);
                puts("loading...");
                size = sizefile(buffer);
                printf("[%d]",size);
                /*clear(buffer);
               strcat(buffer,"untitled.jpg");*/
                if(send(csock, buffer,MAXl, 0) < 0)
                {
                    perror("send()");
                    closesocket(sock);
                    closesocket(csock);
                    end();
                    exit(errno);
                }
                fichier = fopen(buffer, "rb");
                clear(buffer);
                if (fichier != NULL)
                {
                    while (n != 0) // On lit le fichier tant qu'on ne reçoit pas d'erreur != 1
                    {
                        clear(buffer);
                        n = fread(buffer,MAXl-2,1, fichier);
                        buffer[MAXl-1] = '\0';
                        if(n !=0 || sizeof(buffer) == 0)
                        {
                        printf("[%s]",buffer);
                        if(send(csock, buffer,MAXl, 0) < 0)
                            {
                                perror("send()");
                                closesocket(sock);
                                closesocket(csock);
                                end();
                                exit(errno);
                            }
                        }
                    }
                    clear(nbuf);
                    strcat(nbuf,buffer);
                    fclose(fichier);
                    clear(buffer);
                    strcat(buffer,":exit");
                    if(send(csock, buffer,MAXl, 0) < 0)
                    {
                        perror("send()");
                        closesocket(sock);
                        closesocket(csock);
                        end();
                        exit(errno);
                    }
                    clear(buffer);
                    sprintf(buffer, "%d",size%(MAXl-2));
                    if(send(csock, buffer,MAXl, 0) < 0)
                    {
                        perror("send()");
                        closesocket(sock);
                        closesocket(csock);
                        end();
                        exit(errno);
                    }
                    if(send(csock,nbuf,MAXl, 0) < 0)
                    {
                        perror("send()");
                        closesocket(sock);
                        closesocket(csock);
                        end();
                        exit(errno);
                    }

    clien

                puts("upload::");
                if((n = recv(sock, buffer,MAXl, 0)) < 0)
                {
                    perror("recv()");
                    return errno;
                }
                 pFile = fopen(buffer, "wb");
                 clear(buffer);
                if((n = recv(sock, buffer,MAXl, 0)) < 0)
                {
                        perror("recv()");
                        return errno;
                }
                while (strcmp(buffer,":exit"))
                {
                    fwrite(buffer,MAXl-2,1, pFile);
                    if((n = recv(sock, buffer,MAXl, 0)) < 0)
                    {
                        perror("recv()");
                        return errno;
                    }
                }
            clear(buffer);
                if((n = recv(sock, buffer,MAXl, 0)) < 0)
                {
                    perror("recv()");
                    return errno;
                }
            printf("[%s]",buffer);
            size = atoi(buffer);
            if((n = recv(sock, buffer,MAXl, 0)) < 0)
            {
                perror("recv()");
                return errno;
            }
            fwrite(buffer,size,1, pFile);
            fclose(pFile);

    Merci de votre aide :)

    -
    Edité par AyeinLas 7 août 2019 à 17:41:55

    • Partager sur Facebook
    • Partager sur Twitter
      6 août 2019 à 19:49:12

      Avez vous une piste je suis vraiment perdu >_<

      -
      Edité par AyeinLas 7 août 2019 à 17:44:28

      • Partager sur Facebook
      • Partager sur Twitter

      Taille du buffer avec les sockets

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown