Winsock VS bez blokowania programu

Winsock VS bez blokowania programu
AD
  • Rejestracja: dni
  • Ostatnio: dni
  • 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

kq
  • Rejestracja: dni
  • Ostatnio: dni
  • 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: dni
  • Ostatnio: dni
  • 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.