A 正在用 C 编写一个客户端-服务器程序。它发送一个目录名并接收一个文件列表作为答案。我遇到的问题是它陷入了无限循环。
如果我只发送一个目录名称,它可以工作,但如果我发送一个目录列表,它永远不会结束并且什么也不输出。
服务器
while(recv(sock, name, BUFSIZE, 0) > 0){
if ((fddir=opendir(name)) == NULL){
send(sock, strerror(errno), strlen(strerror(errno)), 0);
close(sock);
return 1;
}
send(sock, name, strlen(name), 0);
send(sock, ":", strlen(":"), 0);
send(sock, "\n", strlen("\n"), 0);
while ((dirbuf = readdir(fddir)) != NULL){
buf[0] = '\0';
strcat(buf, dirbuf->d_name);
strcat(buf, "\t");
send(sock, buf, BUFSIZE, 0);
}
}
客户
for (int i=1;i<3;i++){
send(sock, argv[i], strlen(path), 0);
while(recv(sock, buf, BUFSIZE, 0) > 0)
printf("%s", buf);
}
服务器等待直到收到所有目录名称,然后客户端等待服务器发送其中的所有文件。如何追踪程序卡住的地方?