2012-07-21 71 views
0

我有C语言编写的一个简单的echo服务器,我想停止服务器,如果它收到quit我该如何比较recived answer?

int n; 
    char buffer[256]; 
    while(strcmp(buffer,"quit") != 0) 
    { 
     n = read(sock,buffer,255); 
     if (n < 0) 
     { 
     perror("ERROR reading from socket"); 
     exit(1); 
     } 

     printf("Here is the message: %s\n",buffer); 
     printf("%d-%d\n", sizeof(buffer), strcmp(buffer,"quit")); 

     n = write(sock,"I got your message",18); 
     if (n < 0) 
     { 
     perror("ERROR writing to socket"); 
     exit(1); 
     } 
    } 

我怎样才能比较接收缓冲区的字符串?

+0

有什么问题上面的代码? – 2012-07-21 09:51:00

+0

我一直都想与1个 – 2012-07-21 09:52:45

+0

@iUngi:..你在哪里得到1? – Ashe 2012-07-21 09:53:07

回答

2

很可能缓冲区不为0,因此终止使用“串”比较函数是错误的。您应该尝试使用strncmpmemcmp

此外,在while条件,实际上是读成buffer之前测试。

0

除了别人怎么说,你的程序的行为是不明确:在进入循环,你是从buffer读它的初始化之前。