echo服务器不写回客户端

时间:2015-11-29 16:12:23

标签: c networking server client

我正在构建客户端服务器程序

服务器是一个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终止我的服务器,它会成功读取

0 个答案:

没有答案