Я создаю приложение Linux C++/Qt5, которое открывает сокет TCP для исходящего соединения (на удаленный сервер). Я создаю QTcpSocket, а затем попытаться установить sockopt параметры следующим образом:Установить sockopt QTcpSocket
m_tcpSocket = new QTcpSocket(this);
int fd = m_tcpSocket->socketDescriptor();
int enableKeepAlive = 1; // Enable
if (setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, &enableKeepAlive, sizeof(enableKeepAlive)) != 0)
reportsockoptError("SOL_SOCKET","SO_KEEPALIVE");
К сожалению, мой setsockopt терпит неудачу с ошибкой «Bad дескриптор файла», потому что m_tcpSocket-> socketDescriptor() возвращает -1. Как получить дескриптор сокета для исходящего сокета до его подключения? Или мне нужно сделать это ПОСЛЕ подключения? (который, кажется, сокращает то, что я понимаю из документов Qt)
Вышеупомянутое прекрасно работает для прослушивающего сокета (QTcpServer) .... просто не QTcpSocket.
Почему вы не используете функцию qt 'setSocketOption' для этого? –