在C中从客户端向服务器发送多个回复

时间:2017-01-19 02:42:52

标签: c sockets server client

我的服务器向我发送以下消息:

  

INFO 123456 \ n(数量可能有所不同)

我应该用以下方式回复服务器:

  

REPLY 123456 \ n - 匹配回复

目前,我的代码正确发送一个回复。但是,当我尝试发送第二个回复时,服务器返回错误。我觉得它可能与reply_message char数组有关?有什么想法吗?我在下面发布了我的代码。谢谢!

        while(1) {
        server_reply[0] = '\0';
        printf("Server Reply: %s\n", server_reply);
        n = recv(sockfd, server_reply, sizeof(server_reply), 0);
        if (n <= 0) {
            printf("Receive failed\n");
            return 1;
        }
        printf("Message Recieved from Server: %s\n", server_reply);

        if (server_reply) {
            char checkInfo[5];
            memcpy(checkInfo, &server_reply, 4);
            checkInfo[4] = '\0';

            if (strcmp(checkInfo, "INFO") == 0) {
                char reply_message[sizeof(server_reply) + 1];
                memset(reply_message, 0, sizeof(reply_message));
                strncpy(reply_message, "REPLY ", sizeof reply_message - 1);
                char *replyNumber = server_reply;
                replyNumber++;
                replyNumber++;
                replyNumber++;
                replyNumber++;
                replyNumber++;
                strcat(reply_message, replyNumber);
                strcat(reply_message, "\n");
                printf("Reply Message: %s\n", reply_message);

                if ((send(sockfd, reply_message, strlen(reply_message), 0)) < 0) {
                    printf("Send failed");
                    close(sockfd);
                    return 1;
                }
                printf("Message Sent: %s\n", reply_message);
                reply_message[0] = '\0';
            }
        }
    }

我还发布了我收到的错误。

enter image description here

1 个答案:

答案 0 :(得分:0)

从上面的代码可以理解

"server_reply[0] = '\0';"

server_reply是一个数组或字符指针。在做的时候

"memcpy(checkInfo, &server_reply, 4);"

不需要&#34;&amp;&#34;。