読者です 読者をやめる 読者になる 読者になる

yamaguchi.txt

開発日記。備忘録代わりだよ。

QTcpsocketがwriteされない時

全くwriteされない、もしくは意図していたのと違うパケットがtcpでwriteされてしまった場合、デフォルトで有効になっているNagleのアルゴリズムが原因かもしれません。

できるだけまとめて送られてしまうので、逐次的にwriteしたい場合などはsocket->waitForBytesWritten();をwriteの後に書くと正しい挙動になってくれます。

socket->write("hoge");
socket->waitForBytesWritten();

QAbstractSocket::LowDelayOptionでNagleを無効にできると公式ページでは書いてありますが、少なくとも私の環境では無理でした。