2016-07-01 7 views
0

내 애플리케이션에서는 소켓에 쓰는 동안 데이터가 즉시 쓰여지지 않습니다. 하지만 flush() 또는 waitForByteWritten (msec)를 사용하면 작성됩니다. 그러나 flush() 및 waitforByteWritten()의 유일한 문제는 성능 병목 현상을 일으키는 것입니다.QTCPSocket을 사용하여 플러시 및 waitFOrBytesWritten을 사용하지 않고 소켓에 데이터를 즉시 쓰는 방법

내가 사용하면 성능이 좋지 않습니다. 그러나 내가 flush()/waitforBytesWritten()을 사용하지 않으면 데이터 자체가 즉시 전송되지 않습니다.

데이터가 버퍼에 기록 될 때 데이터를 쓸 수 있도록 플래그가 지정되어 있습니까?

+1

몇 가지 코드를 제공해 주시겠습니까? –

+0

작은 시간 간격으로 적은 양의 데이터를'write()'한다면, [Nagle 's Algorithm] (https://en.wikipedia.org/wiki/Nagle%27s_algorithm)을 사용하지 말고 ['tcpSocket- > setSocketOption (QAbstractSocket :: LowDelayOption, 1);'] (https://doc.qt.io/qt-5/qabstractsocket.html#setSocketOption) – Mike

+0

힌트 : 가능한 빨리 * 이벤트 루프로 돌아갑니다! – peppe

답변

0

이벤트 루프를 차단하고 있습니다. 그러지 마. 소켓에 쓰는 코드는 완료 되 자마자 반환되어야합니다.