Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
strcmp在执行套接字I/O时不工作_C_Sockets_Strcmp - Fatal编程技术网

strcmp在执行套接字I/O时不工作

strcmp在执行套接字I/O时不工作,c,sockets,strcmp,C,Sockets,Strcmp,我正在开发一个简单的基于套接字的echo应用程序。我的客户代码如下。套接字I/O工作正常。我正在为每个发送的字符串获取回显。但是我想在用户输入退出时终止客户端。我使用strcmp函数来比较字符串。它似乎不起作用 #include<stdio.h> #include<sys/socket.h> #include<arpa/inet.h> #include<stdlib.h> #include<string.h> #include<u

我正在开发一个简单的基于套接字的echo应用程序。我的客户代码如下。套接字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,sizeofbuffer

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

使用closecli;,cli未初始化。因此,乌布


由于这是在strcmpbuffer之后调用的,因此exit==0为真,故障似乎是由strcmp造成的。

我直接在scanf之后比较输入。我没有比较从服务器收到的字符串。