Функция c не работает для всех файлов, которые пытаются отправить - PullRequest
0 голосов
/ 15 апреля 2019

Я пытаюсь построить клиент FTP-сервера.Я написал эту функцию для отправки файлов, но она работает не для всех файлов.Хотя он работает для некоторых файлов, таких как jpg, когда дело доходит до ppt или других файлов, это создает проблему.Я пытаюсь отправить 100 байт каждый раз файла, над которым я работаю в Ubuntu 18.04

. Ранее я пытался использовать библиотечную функцию для отправки файла через сокет.но это также не помогло.

void sendfiledata(int sockfd, char * filename) {

    FILE * file;
    unsigned long fileLen;
    file = fopen(filename, "rb");

    //Get file length
    fseek(file, 0, SEEK_END);
    fileLen = ftell(file);
    fseek(file, 0, SEEK_SET);

    long int loop = fileLen / 100;
    long int remainfile = fileLen % 100;

    buffer = (char * ) malloc(fileLen);

    fread(buffer, fileLen, sizeof(char), file);
    fclose(file);

    send(sockfd, & fileLen, sizeof(int), 0);
    int i = 0;
    char chunk[100];
    for (int j = 0; j < loop; j++) {
        int k = 0;
        while (i < fileLen && k < 100) {
            chunk[k] = buffer[i];
            i++;
            k++;
        }
        send(sockfd, chunk, 100, 0);
    }
    if (remainfile > 0) {
        int k = 0;
        while (i < fileLen && k < remainfile) {
            chunk[k] = buffer[i];
            i++;
            k++;
        }
        send(sockfd, chunk, remainfile, 0);
    }
    memset(filename, '\0', sizeof(filename));
}

Я хочу, чтобы файлы полностью отправлялись с одного компьютера на другой.но здесь некоторые файлы работают, но не все.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...