我正在開發使用Qt4.8.3,其中一部分涉及在QScopedPointer存儲QAbstractSocket如下的黑莓PlayBook基於網絡的應用程序內:爲什麼在嘗試將QSslSocket存儲在QScopedPointer中時發生bps_remove_fd失敗?
QScopedPointer<QAbstractSocket> nntp;
在我的實現,我將任一QSslSocket或與QTcpSocket取決於conenction是否進行加密,即(均從QAbstractSocket繼承),
if(ssl) {
nntp.reset(new QSslSocket(this));
(dynamic_cast<QSslSocket*>(nntp.data())))->connectToHostEncrypted(server, port);
} else {
nntp.reset(new QTcpSocket(this));
nntp->connectToHost(server, port);
}
當下去的SSL路線(非SSL工作正常!),我結束了以下運行時間錯誤:
虛擬無效QEventDispatcherBlackberry :: unregisterSocketNotifier(在QSocketNotifier *)bps_remove_fd()失敗19
該錯誤可能是黑莓相關給出的錯誤描述和代碼工作在其他平臺如預期的事實(Mac和Linux上進行測試) 。 (注意,數字19指的是文件描述符)。
任何想法,爲什麼我看到這個錯誤,我該如何解決它?
謝謝,
本。
編輯:我剛剛意識到,而不是使用指針,我可以只有一個QSslSocket,並將其當作非ssl模式下的常規QTcpSocket。更容易。我仍想知道上述錯誤的原因,但是
謝謝莫文恩 - 這真的很全面!正如我在編輯中提到的,我認識到我可以使用QSslSocket並將其視爲QTcpSocket而不是將QAbstractPointer存儲在QScopedPointer中,然後根據ssl要求重新設置它。這似乎緩解了上述問題 – 2013-05-15 11:33:56
@BenJ這很好聽:) – Morwenn 2013-05-15 11:44:13