我的服务器向我发送以下消息:
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';
}
}
}
我还发布了我收到的错误。
答案 0 :(得分:0)
从上面的代码可以理解
"server_reply[0] = '\0';"
server_reply
是一个数组或字符指针。在做的时候
"memcpy(checkInfo, &server_reply, 4);"
不需要&#34;&amp;&#34;。