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