我正在创建一个Linux C++/Qt5应用程序,它为出站连接(到远程服务器)打开一个TCP套接字。我创建了一个与QTcpSocket,然后尝试设置sockopt的选项如下:设置QTcpSocket的sockopt
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的与“坏文件描述符”错误而失败,因为m_tcpSocket-> socketDescriptor()将返回-1。在连接之前,如何获取出站套接字的套接字描述符?或者我必须在连接后执行此操作? (这似乎收缩了我从Qt文档中理解的)
上述工作正好适用于侦听套接字(QTcpServer)....只是不是QTcpSocket。
为什么你不使用qt函数'setSocketOption'呢? – 2014-09-24 09:57:04