Wykonuję jedno nieblokujące wysyłanie połączenia na jednym gnieździe, a następnie blokowanie w innym gnieździe. Następnie chcę sprawdzić, czy wysłanie nieblokujące się powiodło lub się nie udało. Jak to zrobić?Sprawdź, czy wysłanie nie blokujące się powiodło.
while (i)
{
retval = send (out_sd, s_message, strlen (s_message), MSG_DONTWAIT);
retval = recv (client_sd, r_message, MSG_LEN, 0);
r_message[retval] = '\0';
/* Here I want to wait for the non-blocking send to complete */
strcpy (s_message, r_message);
strcpy (r_message, "");
i--;
}
Czy można skorzystać z oddzwonienia? – andre
Nie sądzę. Wystarczy sprawdzić, czy wysłanie wiadomości nie powiodło się lub powiodło się, lub w kolejce, przed przejściem do następnej iteracji. – phoxis
Użyj dwóch różnych var/s do przechowywania wyników wysyłania/recv do. – alk