Я пытаюсь сохранить открытый сервер и заставить разных клиентов отправлять серверу строку, сервер сохраняет строку в char rcvdmessage [16] и отправляет ее обратно клиенту. Я новичок в C и не могу понять, почему мой код работает так
если первый клиент отправляет «Hello World», сервер отправляет «Hello World» клиенту.
Если второй клиент отправит «Пока», на второй итерации сервер отправит «Мир Байло».
Есть ли способ очистить мое rcvdmessage [16] в начале каждого цикла? Я попытался установить memset [rcvdmessage, 0,16] прямо при инициализации rcvdmessage, но затем сервер отправил пустой массив char клиенту.
while(1){
// accept - creating a new socket for the accepted connection
addr_size = sizeof their_addr;
otherfd = accept(sockfd, (struct sockaddr *)&their_addr, &addr_size);
// if(otherfd == -1){
// fprintf(stderr, "failed to accept, error: %d\n", bind_check);
// perror("ERROR on accepting");
// return 1;
// } else fprintf(stderr, "success accept, %d\n", bind_check);
// receive message
char rcvdmessage[16];
int bytes_rcvd = recv(otherfd, rcvdmessage, strlen(rcvdmessage), 0);
// if(bytes_rcvd == -1){
// fprintf(stderr, "failed to receive, error: %d\n", bytes_rcvd);
// perror("ERROR on receiving");
// } else{
// printf("Rcvd %s, %d bytes\n", rcvdmessage, bytes_rcvd);
// }
// send the received message
int bytes_sent = send(otherfd, rcvdmessage, strlen(rcvdmessage), 0);
// if(bytes_sent == -1){
// fprintf(stderr, "failed to send, error: %d\n", bytes_sent);
// perror("ERROR on sending");
// } else{
// printf("Sent %s, %d bytes\n",rcvdmessage, bytes_sent);
// }
// memset(rcvdmessage, 0, strlen(rcvdmessage));
}