Nieoczekiwany wynik w pierwszym przebiegu pętli

0

Witam.

W funkcji main posiadam poniższy fragment kodu:

struct sockaddr_in recv_address;

for (;;)
{
        memset(&enc_message, '\0', ROZMIAR_BUFORA_ODCZYTU);
        
        sock_read_status = recvfrom(sock_desc, enc_message, READ_BUFF_SIZE, 0, (struct sockaddr *)&recv_address, &rozmiar);

        if (sock_read_status == -1) 
                      continue;

        char *ip = inet_ntoa(empty.sin_addr);
        printf("IP: %s \n", ip);
}

Program nasłuchuje wiadomości i po otrzymaniu wiadomości wyświetla adres IP z którego wiadomość nadeszła.

Ogólnie program działa prawidłowo dopiero po nadejściu drugiej wiadomości tzn. po uruchomieniu programu i odebraniu pierwszej wiadomości zwrócony adres wynosi "0.0.0.0". Po odebraniu każdej kolejnej wiadomości zwracane adresy są już prawidłowe.

Co jest (lub może być) przyczyną takiego dziwnego zachowania programu?

Pozdrawiam
Fabian

0

Nieaktualne - Problem rozwiązany

zmienna "rozmiar" zawierała nieprawidłowo określony rozmiar struktury sockaddr_in

1 użytkowników online, w tym zalogowanych: 0, gości: 1