私はLinuxでcで単純なファイルサーバーを作成しようとしています。アイデアは、私はクライアント側のサーバーから転送されるファイルの名前を入力することです。サーバーは、接続が確立されるとそのファイル名を受け取ります。しかし、私が渡す引数は常に、現在のディレクトリの最初のファイルを開きます。それはすぐにwhileループを脱出だcプログラムを使ってlinuxでディレクトリを読む
if(strcmp(buf,dptr->d_name)==0) {
break;
}
:これは
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);
あなたの問題は、fopen(namelist ...)が期待するディレクトリからファイルを開けないということですか? namelist [n1] - > d_nameの値をprintf-ingしてデバッグしようとしましたか? –