Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Внутренний буффер открытых сокетов


Автор: null56 14.2.2009, 13:36
В общем изложу суть того, чего хочу добиться...
На серверной стороне имеется открытый сокет QSslSocket, который появился от QTcpServer, когда произошел коннект со стороны клиента. После того, как на серверной стороне создался объект, я запускаю шифрование startServerEncryption(). Но, если на другой стороне сидит неизвестный и не знает, что идет соединение по шифрванному каналу, он может не ждать начала шифрованного соединения с сервером и сразу посылать данные.
Если я правильно понимаю работу сокетов в qt, то в операционной системе, под сокет выделяется буфер, который наполняется данными от клиента средствами самой оси, после чего происходит сигнал readyRead.
Так вот, на серверной стороне состояние сокета помечено, как UnEncrypt и если приходят данные в этот буфер и генериться сигнал readyRead, мне бы хотелось этот буфер очищать, но не уничтожать сокет

Вопрос
Возможно ли такое сделать средствами qt?

ЗЫ: вопрос своевременного вышибания неизвестного злоумышленника решается по таймеру, здесь меня конкретно интересует очистка внутреннего буфера

Заранее благодарен за помощь

Автор: SABROG 14.2.2009, 14:24
Выстави буффер нужного тебе размера, если боишься, что заддосят. Потом просто читай данные во временный QByteBuffer, который будет уничтожаться при выходе из слота, если state не тот который нужен. seek() работать не будет для sequential device, а сокет им является.

Автор: null56 14.2.2009, 16:10
а что будет проиходить, если клиент на той стороне будет пытаться послать больше данных, чем размер выставленного мной буфера... Просто чтение будет происходить не сразу на стороне сервера

Автор: null56 17.2.2009, 22:40
ладно, это экспериментами проще проверить....

Спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)