我正在构建客户端服务器程序
服务器是一个shell,需要用户先登录
从调试我发现我的Rio_write()
命令正在执行,但我的Rio_readlineb()
命令(在客户端)没有捕获服务器正在写入的内容
在客户端我有......
printf("Username: ");
Fgets(username, 128, stdin);
strtok(username, "\n"); //splice newline off
strcat(username, " "); //concatenate a space
printf("Password: ");
Fgets(password, 128, stdin);
strcat(username, password);
Rio_writen(clientfd, username, strlen(username));
Rio_readlineb(&rio, buf, MAXLINE);
并进行调试,它停留在最后一行
在服务器端我有
Rio_readinitb(&rio, connfd);
Rio_readlineb(&rio, buf, MAXLINE);
//scan through user text file and verify user and password exists
file = Fopen("rrshusers.txt", "r");
while (Fgets(login, MAXLINE, file) != NULL){
if (!strcmp(buf, login)){ //case where the username and password is verified
flag = 1;
strcpy(buf, "Login Approved");
Rio_writen(connfd, buf, strlen(buf));
break;
}
}
像我说的那样,从调试中我可以看到写入函数已执行,程序继续运行,但客户端从不读取
奇怪的是,如果我使用Ctrl-C终止我的服务器,它会成功读取