c - strcmp 在进行套接字 I/O 时不工作

标签 c sockets strcmp

我正在开发一个基于套接字的简单回显应用程序。我的客户端代码如下。套接字 I/O 工作完美。我收到每个发送的字符串的回显。但我想在用户输入“退出”时终止客户端。我使用 strcmp() 函数来比较字符串。好像不行。

#include<stdio.h>
#include<sys/socket.h>
#include<arpa/inet.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>


int main(int argc,char **argv){

    int sc,cli,b,tmp,clilen;
    struct sockaddr_in serveradd;

    int port;
    char buffer[1024],sbuffer[1024];

    port = atoi(argv[2]);

    sc = socket(PF_INET,SOCK_STREAM,0);

    memset(&serveradd,0,sizeof(serveradd));

    serveradd.sin_family=AF_INET;
    serveradd.sin_port=htons(port);
    serveradd.sin_addr.s_addr=inet_addr(argv[1]);

    connect(sc, (struct sockaddr *) &serveradd, sizeof(serveradd));

    while(1){
        memset(&buffer,0,sizeof(buffer));
        scanf("%s",buffer);

        if(strcmp(buffer,"exit")==0){
            break;
        }

        send(sc, buffer, strlen(buffer),0);
        memset(&sbuffer,0,sizeof(sbuffer));
        tmp=recv(sc,sbuffer,1023,0);
        sbuffer[tmp]='\0';
        printf("%s\n",sbuffer);
    }
        close(cli);




}

最佳答案

memset(&buffer,0,sizeof(buffer));

这里不应该是您尝试将缓冲区地址设置为零的&bufferbuffer本身就是基地址。

关于c - strcmp 在进行套接字 I/O 时不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25871407/

相关文章:

c - 将用户输入写入文件,然后读取它

c - 使用 ptrace 停止或杀死进程中的线程?

mysql - 通过套接字将ec2服务器连接到rds?

python - 如何将非常大的图像从python脚本传输到NodeJS,而又不引起 Node 应用程序( Electron )的滞后

c++ - 比较 const char * 和 strcmp

c - `strcmp` 的返回值的顺序是什么?

c - 为什么我会遇到段错误(strcmp 或 fgets)?

c - 指针声明的区别?

c99 转到过去的初始化

java - AWS SDK S3 套接字关闭异常