TCPserver на Си. Проблема с передачей сообщений
Тестирую TCP-сервер, задача состоит в том что я должен принимать от клиента сообщения, сначала все данные считываются правильно, но потом в начало массива попадают странные символы, не знаю как избавиться от них.
Вот функция в которой принимаю сообщения(client.client - это дескриптор сокета клиента):
int recv_data(client_info& client, FILE* file) {
int num = 0;
int rcv = recv(client.client, (char*)&num, 4, 0);
if (rcv <= 0)
{
printf("Num of message ERROR\n");
return -1;
}
printf("num = %d\n", num);
fprintf(file, "%u.%u.%u.%u:", (client.ip >> 24) & 0xFF, (client.ip >> 16) & 0xFF, (client.ip >> 8) & 0xFF, (client.ip) & 0xFF);
fprintf(file, "%u ", client.port);
char dd1 = 0, mm1 = 0, dd2 = 0, mm2 = 0, hh = 0, mm = 0, ss = 0;
unsigned short yyyy1 = 0, yyyy2 = 0;
rcv = recv(client.client, (char*)&dd1, 1, 0);
fprintf(file, "%d.", dd1);
printf("%d.", dd1);
rcv = recv(client.client, (char*)&mm1, 1, 0);
fprintf(file, "%d.", mm1);
printf("%d.", mm1);
rcv = recv(client.client, (char*)&yyyy1, 2, 0);
fprintf(file, "%d.", yyyy1);
yyyy1 = ntohs(yyyy1);
printf("%d ", yyyy1);
rcv = recv(client.client, (char*)&dd2, 1, 0);
fprintf(file, "%d.", dd2);
printf("%d.", dd2);
rcv = recv(client.client, (char*)&mm2, 1, 0);
fprintf(file, "%d.", mm2);
printf("%d.", mm2);
rcv = recv(client.client, (char*)&yyyy2, 2, 0);
fprintf(file, "%d.", yyyy2);
yyyy2 = ntohs(yyyy2);
printf("%d ", yyyy2);
char buffer[512] = { 0 };
rcv = recv(client.client, buffer, sizeof(buffer), 0);
int len = strlen(buffer);
buffer[len + 1] == '\0';
printf("\n%s", buffer);
fputs(buffer, file);
if (rcv >= 0)
send(client.client, "ok", 2, 0);
fclose(file);
}
В buffer должен получить сообщение "msg1", а получаю перед этим еще какие-то символы, при этом tcp-клиент все отправляет правильно 100%. У меня раньше была проблема, что scanf оставляет после себя символы в потоке stdin, мб тут что-то похожее, помогите если знаете как исправить