我正在創建一個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