Чтобы получить информацию о сокете, должен быть создан собственный сокет, то есть получить socketDescriptor (), отличный от -1, но в вашем случае он не подключен, в результате чего это значение не будет прочитано, возвращая недопустимый QVariant.
Решение состоит в том, чтобы подключить сокет и проанализировать, является ли сокет действительным, для получения требуемой информации:
#include <QCoreApplication>
#include <QTimer>
#include <QUdpSocket>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QUdpSocket socket;
QObject::connect(&socket, &QAbstractSocket::stateChanged, [&socket](){
if(socket.socketDescriptor() != -1){
qDebug() << socket.socketOption(QAbstractSocket::ReceiveBufferSizeSocketOption);
// kill application
QTimer::singleShot(1000, &QCoreApplication::quit);
}
});
socket.bind(QHostAddress::LocalHost, 1234);
return a.exec();
}
Вывод:
QVariant(int, 212992)