write()套接字编程使程序无法推进

时间:2013-02-13 05:45:43

标签: c++ sockets client

嗨,我想我有一个简单的问题,但我无法弄清楚。这是我的代码片段

void makefilerequest(){
  int n;
  char buffer[256];
  char file[] = "test.txt";

  printf("Enter file: ");
  bzero(file, 256);
  //fgets(buffer, 255, stdin);
  n = write(sockfd, file, strlen(file));
  if( n < 0)
    error("ERROR writing to socket");

  bzero(buffer,256);
  n = read(sockfd,buffer,255);
  if (n < 0) 
    error("ERROR reading from socket");
  printf("%s\n",buffer);
}

我的问题是,当我尝试设置包含要写入套接字的信息的char []时,我的程序不会向前移动,它会在n = write(sockfd, file, strlen(file));处停止。但是,当我从stdin中读出test.txt时,它可以工作,我的程序也可以执行。如果我做了以下更改,它可以工作,但我不想通过标准输入传递信息。

void makefilerequest(){
  int n;
  char buffer[256];
  char file[] = "test.txt";

  printf("Enter file: ");
  bzero(buffer, 256);
  fgets(buffer, 255, stdin);
  n = write(sockfd, buffer, strlen(buffer));
  if( n < 0)
    error("ERROR writing to socket");

  bzero(buffer,256);
  n = read(sockfd,buffer,255);
  if (n < 0) 
    error("ERROR reading from socket");
  printf("%s\n",buffer);
}

提前致谢

0 个答案:

没有答案