serwer QT, write

serwer QT, write
MI
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 9 lat
  • Postów:199
0

Cześć :)
Mamy sobie klienta, który wysyła strumień bajtów do serwera.
Wiadomo, że pierwsze dwa bajty to rozmiar pozostałego strumienia.
Czy dobrze rozumiem, że przy odbieraniu połączenia odbieram dwa pierwsze bajty z gniazda i potem pobieram z gniazda tak długo, aż nie pobiorę całości?

Bo np. ja serializuję obiekt i pierwszym polem tego obiektu jest właśnie rozmiar, zatem nie wiem, jak napisać operator >>

edytowany 1x, ostatnio: mielony
MarekR22
Moderator C/C++
  • Rejestracja:około 17 lat
  • Ostatnio:13 minut
1

Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
MI
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 9 lat
  • Postów:199
0

while(true) {
if (tcpSocket->bytesAvailable() < 4) {
break;
}

Fragment Twojego kodu.
Jak mogę to poprawić, bo załóżmy sytuację, że ktoś wysłał więcej niż cztery bajty, wtedy wieczna pętla

edytowany 1x, ostatnio: mielony
MarekR22
przeanalizuj kod dokładniej. tam nie ma nieskończonej pętli zawsze trafia się w końcu na break;.

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.