Aktywne Wpisy

panthererose +7
Mirki, ile u Was kosztuje wymiana opon i skąd jesteście? Bo z sezonu na sezon jest coraz drożej. Z letnich na zimowe płaciłam 120, a teraz z zimowych na letnie 130 - obwarzanek warszawski.
#wulkanizacja #opony #wymiana
#wulkanizacja #opony #wymiana

WielkiNos +203
Wiedzieliście, że są ludzie, którzy robiąc sobie dzieci oczekują od nich opieki na starość?
Skazując własne dziecka na taki los każe mu się rezygnować z własnego życia żeby poświęciło je podcieraniu nam odbytu podczas gdy są domy opieki. Pierwsze do demonizowania takich miejsc są osoby, które zapewne osobiście się starymi ludźmi opiekować nie będą.
#dzieci #starosc #bekazpodludzi #antynatalizm #logikaniebieskichpaskow
Skazując własne dziecka na taki los każe mu się rezygnować z własnego życia żeby poświęciło je podcieraniu nam odbytu podczas gdy są domy opieki. Pierwsze do demonizowania takich miejsc są osoby, które zapewne osobiście się starymi ludźmi opiekować nie będą.
#dzieci #starosc #bekazpodludzi #antynatalizm #logikaniebieskichpaskow
źródło: temp_file5721604368450828705
Pobierz



Mirki, orientujecie się może jak i czy się da w ogóle wysłać przez QTcpSocket wektor danych? Ogółem obiekt? W sensie daję mu wektor który ma 100 intów czy czegokolwiek i mu mówię, żeby mi go po prostu wysłał taki jaki jest a ktoś po stronie klienta spodziewa się tego wektora o takim rozmiarze? Czy muszę mu serializować to i odczytywać po prostu tego inta jednego za drugim i po drugiej stronie też łapać jednego inta na raz?
Komentarz usunięty przez autora
QByteArray block;QDataStream sendStream(█, QIODevice::ReadWrite);sendStream << quint16(0) << str;sendStream.device()->seek(0);sendStream << (quint16)(block.size() - sizeof(quint16));tcpSocket->write(block);Mogę to zrobić z palca i wysyłać to z buta - w pętli for robić socket->write potem socket->flush int za
Lepiej serializować, ale jeżeli już musisz (jeżeli to np są sample i ważna jest latencja) to w QDataStream masz writeBytes i wrzucasz
writeBytes( reinterpret_cast(wektor.data()), wektor.size() * sizeof( decltype(wektor)::value_type ) )1. Transmisja po TCP odbywa się porcjami, i druga strona musi cały przekaz sobie "poskładać" - dlatego aby to było możliwe podałem Ci wyżej prosty sposób: najpierw wysyłasz ilość przesyłanych danych, a dopiero potem same dane binarne.
2. W std::vector jest możliwy bezpośredni dostęp do poszczególnych elementów sekwencyjnie, nawet z wykorzystaniem arytmetyki wskaźników. link, dysponując więc wskaźnikiem na pierwszy element wektora (metoda data()) masz dostęp w zasadzie do kolejnych
QByteArray block; // tworzysz jakiś blok danych binarnych, ok
QDataStream sendStream(█, QIODevice::ReadWrite); // tworzysz data stream, który ma zapisywać do bloku w trybie obustronnym
sendStream << quint16(0) << str; // wg. dokumentacji zamiast (0) powinna być chyba liczba, którą chcę tam dodać, nie? Więc musiałbym zrobić fora i element po elemencie wektora w ten sposób wrzucać zdaje się. Czym jest str?
sendStream.device()->seek(0);
1.
void send(const std::vector* buffer) {2.
QByteArray block;3.
QDataStream sendStream(█, QIODevice::ReadWrite);4.
sendStream << quint16(0) << buffer->data();5.
sendStream.device()->seek(0);6.
sendStream << (quint16)(block.size() - sizeof(quint16));7.
tcpSocket->write(block);}block - ciąg bajtów na dane do wysyłki skojarzone ze strumieniem (linia 2 i 3)
wysłanie do strumienia: 0, a następnie ciągu intów
Tylko teraz pytanie - jak z odczytem tego? Chcę to wpisać do wektora potem mając byte array. No po prostu rekonstrukcja.
Robisz rekonstrukcje w slocie podpiętym pod sygnał readyRead klasy QTcpSocket.
Wykorzystujesz QDataStream aby odczytać najpierw wartość przesłanych danych, a następnie te dane do QByteArray.
Na zakończenie odbudowujesz sobie std::vector z QByteArray
QByteArray, ponieważQTCPSocketjest buforowany.@Khaine: Masz tutaj przykład:
https://gist.github.com/ArpegiusWhooves/117f867dde9696d5e6b0