чтение каталога в Linux с помощью программы c - PullRequest
1 голос
/ 19 января 2012

Я пытаюсь создать простой файловый сервер на C в Linux. Идея заключается в том, что я ввожу имя файла для передачи с сервера на стороне клиента. Сервер получает это имя файла, как только соединение установлено. Но какой бы аргумент я ни передавал, всегда открывайте первый файл в текущем каталоге. Это код сервера

getcwd(buf3, sizeof(buf3));
dirp = opendir(buf3);

while (dptr = readdir(dirp)) {
    if (strcmp(buf, dptr->d_name) == 0);
        break;
    printf("%s\n", dptr->d_name);
}

string(dptr->d_name);
f = fopen(namelist[n1]->d_name, "r");

//f1=fopen(buf,"r");
if (f1 == NULL)
    err_sys("open error");

while (1)           //service client till it closes connection
{
    fgets(buf2, 50, f1);

    buflen = strlen(buf2);
    printf("Data Read From File: %d\n", buflen);

    if ((n = send(clifd, buf2, buflen, 0)) < 0)
        err_sys("send error");
    else if (n == 0) {
        printf("\nNo Data Recieved");
        break;
    }

    buf2[n] = 0;
};              //end of inner while

close(clifd);
fclose(f1);
exit(0); 

1 Ответ

7 голосов
/ 19 января 2012
if(strcmp(buf,dptr->d_name)==0);
    break;

Должно быть:

if(strcmp(buf,dptr->d_name)==0) {
    break;
}

Он сразу же ускользает от вашего цикла.

...