Winsock VS bez blokowania programu

Winsock VS bez blokowania programu
AD
  • Rejestracja:około 18 lat
  • Ostatnio:5 miesięcy
  • Postów:206
0

Witam

Mam problem, napisałem klienta i serwera, które wysyłają wzajemnie do siebie dane do przesyłania danych skorzystałem z winsock2 i z ogarnięciem całości nie było szczególnego kłopotu z jednym ale... wywołanie poleceń send i recv blokuje program. Jeśli nawiąże się połączenie i próbuje przesłać dane to druga strona czeka na dane blokując swoje wykonywanie na ten czas, czy jest możliwość jakiegoś sensownego obejścia tej sytuacji?
przykładowe polecenie serwera - wyślij

Kopiuj
send(s, polecenie.data(), strlen(polecenie.data()), 0);

i odbierz

Kopiuj
recv(s, wskaznik_do_bufora, dlugosc_bufora_wiadomosci, 0);

Pozdrawiam

edytowany 1x, ostatnio: adydan
kq
Moderator C/C++
  • Rejestracja:prawie 12 lat
  • Ostatnio:około 6 godzin
  • Lokalizacja:Szczecin
1

Pewnie, użyj select aby sprawdzić czy możesz dokonać nieblokującego odczytu: https://msdn.microsoft.com/en-us/library/windows/desktop/ms740141%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396


06
  • Rejestracja:prawie 20 lat
  • Ostatnio:około rok
  • Postów:2440
0

...albo przełącz sockety w tryb nieblokujący (funkcja ioctlsocket).

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.