recvfrom - jak przerwać nasłuchiwanie

0

nie jestem dobry z socketów

piszę mały serwer udp do konkretnych zastosować.

kawałek kodu:

if ( (nnn = recvfrom(sockfd, mesg, MAXLINE, 0, (SA *) &cliaddr, &len)) < 0)
		{
                (...)
                }

serwer sobie nasłuchuje w pętli używając właśnie funkcji recvfrom.
chodzi mi o to jak przerwać nasłuchiwanie? powiedzmy, że użytkownik chce wyłączyć aplikację, a ona się zawiesza dopóki nie dostanie kolejnego datagramu (tzn dopóki funkcja recvrom nie zakończy działania). jak temu zaradzić nie przerzucając wszystkiego do osobnego wątku?

0
  1. Wykorzystać funkcje select() tak zeby wołać recvfrom tylko kiedy faktycznie coś czeka na odbiór
  2. Wykorzytać timeout oferowany przez select()
  3. Poza tym zapewne masz to nasłuchiwanie w innym wątku niż odczytywanie komunikatów od usera, więc zawsze możesz zabić ten wątek.

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