Sprawa wygląda tak:
- łączę się z serwerem
- tworzę wątek, w którym w pętli odbieram wszelkie wiadomości od serwera
- w pewnym momencie zamykam ten wątek, wysyłam jedno zapytanie do serwera i już w głównym wątku aplikacji oczekuję na odpowiedź
Na Windowsie wszystko działało, ale zachciało mi się zabawić w Linuksa i staram się przepisać na niego tą aplikację.
Problem wygląda tak, że po wysłaniu tego ostatniego zapytania nie dostaję odpowiedzi. recv zwraca -1, a errno == 0. Natomiast sniffując aplikację okazuje się, że ostatnia odpowiedź dochodzi.
Wygląda to mniej więcej tak, po prostu:
zatrzymajWatek = true;
send(cos tam cos tam);
recv(cos tam cos tam);
Socket ma ustawiony SO_RCVTIMEO na 5 sekund, w wątku: sprawdzam czy zatrzymajWatek == true, recv(), czekam 50μs. Próbowałem też przed wysyłaniem zabić wątek (pthread_kill). Bez skutku.
O co może chodzić?