<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # QSslSocket Class Reference ## [[QtNetwork](index.htm) module] 該QSslSocket類提供的SSL加密套接字的客戶端和服務器。[More...](#details) 繼承[QTcpSocket](qtcpsocket.html)。 ### Types * `enum PeerVerifyMode { VerifyNone, QueryPeer, VerifyPeer, AutoVerifyPeer }` * `enum SslMode { UnencryptedMode, SslClientMode, SslServerMode }` ### Methods * `__init__ (self, QObject?parent?=?None)` * `abort (self)` * `addCaCertificate (self, QSslCertificate?certificate)` * `bool addCaCertificates (self, QString?path, QSsl.EncodingFormat?format?=?QSsl.Pem, QRegExp.PatternSyntax?syntax?=?QRegExp.FixedString)` * `addCaCertificates (self, list-of-QSslCertificate?certificates)` * `bool atEnd (self)` * `int bytesAvailable (self)` * `int bytesToWrite (self)` * `list-of-QSslCertificate caCertificates (self)` * `bool canReadLine (self)` * `list-of-QSslCipher ciphers (self)` * `close (self)` * `connectToHostEncrypted (self, QString?hostName, int?port, QIODevice.OpenMode?mode?=?QIODevice.ReadWrite)` * `connectToHostEncrypted (self, QString?hostName, int?port, QString?sslPeerName, QIODevice.OpenMode?mode?=?QIODevice.ReadWrite)` * `connectToHostImplementation (self, QString?hostName, int?port, QIODevice.OpenMode?openMode)` * `disconnectFromHostImplementation (self)` * `int encryptedBytesAvailable (self)` * `int encryptedBytesToWrite (self)` * `bool flush (self)` * `ignoreSslErrors (self)` * `ignoreSslErrors (self, list-of-QSslError?errors)` * `bool isEncrypted (self)` * `QSslCertificate localCertificate (self)` * `SslMode mode (self)` * `QSslCertificate peerCertificate (self)` * `list-of-QSslCertificate peerCertificateChain (self)` * `int peerVerifyDepth (self)` * `PeerVerifyMode peerVerifyMode (self)` * `QString peerVerifyName (self)` * `QSslKey privateKey (self)` * `QSsl.SslProtocol protocol (self)` * `str readData (self, int?maxlen)` * `QSslCipher sessionCipher (self)` * `setCaCertificates (self, list-of-QSslCertificate?certificates)` * `setCiphers (self, list-of-QSslCipher?ciphers)` * `setCiphers (self, QString?ciphers)` * `setLocalCertificate (self, QSslCertificate?certificate)` * `setLocalCertificate (self, QString?path, QSsl.EncodingFormat?format?=?QSsl.Pem)` * `setPeerVerifyDepth (self, int?depth)` * `setPeerVerifyMode (self, PeerVerifyMode?mode)` * `setPeerVerifyName (self, QString?hostName)` * `setPrivateKey (self, QSslKey?key)` * `setPrivateKey (self, QString?fileName, QSsl.KeyAlgorithm?algorithm?=?QSsl.Rsa, QSsl.EncodingFormat?format?=?QSsl.Pem, QByteArray?passPhrase?=?QByteArray())` * `setProtocol (self, QSsl.SslProtocol?protocol)` * `setReadBufferSize (self, int?size)` * `bool setSocketDescriptor (self, int?socketDescriptor, QAbstractSocket.SocketState?state?=?QAbstractSocket.ConnectedState, QIODevice.OpenMode?mode?=?QIODevice.ReadWrite)` * `setSocketOption (self, QAbstractSocket.SocketOption?option, QVariant?value)` * `setSslConfiguration (self, QSslConfiguration?config)` * `QVariant socketOption (self, QAbstractSocket.SocketOption?option)` * `QSslConfiguration sslConfiguration (self)` * `list-of-QSslError sslErrors (self)` * `startClientEncryption (self)` * `startServerEncryption (self)` * `bool waitForBytesWritten (self, int?msecs?=?30000)` * `bool waitForConnected (self, int?msecs?=?30000)` * `bool waitForDisconnected (self, int?msecs?=?30000)` * `bool waitForEncrypted (self, int?msecs?=?30000)` * `bool waitForReadyRead (self, int?msecs?=?30000)` * `int writeData (self, str?data)` ### Static Methods * `addDefaultCaCertificate (QSslCertificate?certificate)` * `bool addDefaultCaCertificates (QString?path, QSsl.EncodingFormat?format?=?QSsl.Pem, QRegExp.PatternSyntax?syntax?=?QRegExp.FixedString)` * `addDefaultCaCertificates (list-of-QSslCertificate?certificates)` * `list-of-QSslCertificate defaultCaCertificates ()` * `list-of-QSslCipher defaultCiphers ()` * `setDefaultCaCertificates (list-of-QSslCertificate?certificates)` * `setDefaultCiphers (list-of-QSslCipher?ciphers)` * `list-of-QSslCipher supportedCiphers ()` * `bool supportsSsl ()` * `list-of-QSslCertificate systemCaCertificates ()` ### Qt Signals * `void encrypted ()` * `void encryptedBytesWritten (qint64)` * `void modeChanged (QSslSocket::SslMode)` * `void peerVerifyError (const QSslError&)` * `void sslErrors (const QList&lt;QSslError&gt;&)` * * * ## Detailed Description 該QSslSocket類提供的SSL加密套接字的客戶端和服務器。 QSslSocket建立可用于傳輸加密數據安全,加密的TCP連接。它可以同時在客戶端和服務器模式下運行,并且它支持SSL的現代化協議,包括支持SSLv3和TLSv1 。默認情況下, QSslSocket使用的TLSv1 ,但是你可以通過調用改變SSL協議[setProtocol](qsslsocket.html#setProtocol)()只要你握手之前做到這一點已經開始。 SSL加密運行在現有TCP流頂部的插座進入后[ConnectedState](qabstractsocket.html#SocketState-enum)。有兩種簡單的方法來建立使用QSslSocket安全連接:通過即時SSL握手,或連接已經建立了未加密模式之后延遲SSL握手發生。 使用QSslSocket最常見的方式是通過調用構造對象,并啟動安全連接[connectToHostEncrypted](qsslsocket.html#connectToHostEncrypted)( ) 。這個方法立刻執行SSL握手一旦連接已經建立。 ``` QSslSocket *socket = new QSslSocket(this); connect(socket, SIGNAL(encrypted()), this, SLOT(ready())); socket->connectToHostEncrypted("imap.example.com", 993); ``` 作為一個普通的[QTcpSocket](qtcpsocket.html), QSslSocket進入[HostLookupState](qabstractsocket.html#SocketState-enum),[ConnectingState](qabstractsocket.html#SocketState-enum),最后是[ConnectedState](qabstractsocket.html#SocketState-enum)如果連接成功。握手然后自動啟動,如果成功,[encrypted](qsslsocket.html#encrypted)()信號被發射,以指示插座已經進入了加密的狀態,并準備好使用。 注意,數據可從返回后,立即被寫入到插座[connectToHostEncrypted](qsslsocket.html#connectToHostEncrypted)( )(即,前[encrypted](qsslsocket.html#encrypted)()信號被發射) 。該數據被排隊在QSslSocket后才[encrypted](qsslsocket.html#encrypted)()信號被發射。 使用延遲SSL握手,以確保現有連接的一個例子是SSL服務器固定一個傳入的連接的情況下。假設你創建一個SSL服務器類作為子類[QTcpServer](qtcpserver.html)。你會復蓋[QTcpServer.incomingConnection](qtcpserver.html#incomingConnection)( )的東西,如下面的例子,它首先構造QSslSocket的一個實例,然后調用[setSocketDescriptor](qsslsocket.html#setSocketDescriptor)( )新的套接字的描述符設置為現有的傳入然后,它開始通過調用SSL握手[startServerEncryption](qsslsocket.html#startServerEncryption)( ) 。 ``` void SslServer.incomingConnection(int socketDescriptor) { QSslSocket *serverSocket = new QSslSocket; if (serverSocket->setSocketDescriptor(socketDescriptor)) { connect(serverSocket, SIGNAL(encrypted()), this, SLOT(ready())); serverSocket->startServerEncryption(); } else { delete serverSocket; } } ``` 如果發生錯誤, QSslSocket發射[sslErrors](qsslsocket.html#sslErrors)()信號。在這種情況下,如果不采取行動,以忽略錯誤( s)時,連接將被丟棄。要繼續,盡管錯誤的發生,你可以調用[ignoreSslErrors](qsslsocket.html#ignoreSslErrors)( ) ,無論是從該時隙內發生的錯誤后,或建設QSslSocket后,連接之前的任何時間嘗試。這將允許QSslSocket忽略它遇到建立對等體的身份,當出現差錯。在SSL握手過程忽略錯誤,應謹慎使用,因為安全連接的一個基本特征是,它們應與成功握手建立。 一旦加密,您可以使用QSslSocket作為一個經常[QTcpSocket](qtcpsocket.html)。何時[readyRead](qiodevice.html#readyRead)( )被發射,你可以調用[read](qiodevice.html#read)( )[canReadLine](qsslsocket.html#canReadLine)()和[readLine](qiodevice.html#readLine)() ,或[getChar](qiodevice.html#getChar)( )讀取QSslSocket的內部緩沖區解密數據,并且可以調用[write](qiodevice.html#write)()或[putChar](qiodevice.html#putChar)( )將數據寫回給對端。 QSslSocket會自動加密寫入的數據對你來說,并放出[encryptedBytesWritten](qsslsocket.html#encryptedBytesWritten)()一旦數據已被寫入到對等體。 為方便起見, QSslSocket支持[QTcpSocket](qtcpsocket.html)的阻斷功能[waitForConnected](qsslsocket.html#waitForConnected)( )[waitForReadyRead](qsslsocket.html#waitForReadyRead)( )[waitForBytesWritten](qsslsocket.html#waitForBytesWritten)()和[waitForDisconnected](qsslsocket.html#waitForDisconnected)( ) 。它也提供[waitForEncrypted](qsslsocket.html#waitForEncrypted)(),它會阻塞調用線程,直到一個加密的連接已經建立。 ``` QSslSocket socket; socket.connectToHostEncrypted("http.example.com", 443); if (!socket.waitForEncrypted()) { qDebug() << socket.errorString(); return false; } socket.write("GET / HTTP/1.0\r\n\r\n"); while (socket.waitForReadyRead()) qDebug() << socket.readAll().data(); ``` QSslSocket提供了用于處理加密密碼,私鑰和地方,同行,以及證書頒發機構( CA)證書廣泛的,易于使用的API 。它還提供了用于處理在握手階段所發生的錯誤的API。 以下功能也可以定制: * The socket's cryptographic cipher suite can be customized before the handshake phase with [setCiphers](qsslsocket.html#setCiphers)() and [setDefaultCiphers](qsslsocket.html#setDefaultCiphers)(). * The socket's local certificate and private key can be customized before the handshake phase with [setLocalCertificate](qsslsocket.html#setLocalCertificate)() and [setPrivateKey](qsslsocket.html#setPrivateKey)(). * The CA certificate database can be extended and customized with [addCaCertificate](qsslsocket.html#addCaCertificate)(), [addCaCertificates](qsslsocket.html#addCaCertificates)(), [setCaCertificates](qsslsocket.html#setCaCertificates)(), [addDefaultCaCertificate](qsslsocket.html#addDefaultCaCertificate)(), [addDefaultCaCertificates](qsslsocket.html#addDefaultCaCertificates)(), and [setDefaultCaCertificates](qsslsocket.html#setDefaultCaCertificates)(). **Note:**如果可以,在Unix (不包括Mac OS X的)根證書將來自標準證書目錄按需加載。如果您不希望加載的根證書上的需求,你需要調用靜態函數[setDefaultCaCertificates](qsslsocket.html#setDefaultCaCertificates)( )前的第一個SSL握手是在你的應用程序, (例如,通過“ QSslSocket.setDefaultCaCertificates ([QSslSocket.systemCaCertificates](qsslsocket.html#systemCaCertificates)( ) ) ;“) ,或致電[setCaCertificates](qsslsocket.html#setCaCertificates)( )在之前的SSL握手你QSslSocket實例。 有關密碼和證書的詳細信息,請參閱[QSslCipher](qsslcipher.html)和[QSslCertificate](qsslcertificate.html)。 本產品包括OpenSSL工具包的使用由OpenSSL項目開發的軟件([http://www.openssl.org/](http://www.openssl.org/)) 。 **Note:**注意之間的差值的[bytesWritten](qiodevice.html#bytesWritten)()信號和[encryptedBytesWritten](qsslsocket.html#encryptedBytesWritten)()信號。對于[QTcpSocket](qtcpsocket.html),[bytesWritten](qiodevice.html#bytesWritten)()會得到盡快的數據已被寫入到TCP套接字射出。對于QSslSocket ,[bytesWritten](qiodevice.html#bytesWritten)()會得到發射時,數據被加密并[encryptedBytesWritten](qsslsocket.html#encryptedBytesWritten)()會得到盡快的數據已被寫入到TCP套接字射出。 ### Symbian Platform Security Requirements 在Symbian ,它使用這個類的進程必須有`NetworkServices`平臺的安全能力。如果客戶端程序缺乏這種能力,操作將失敗。 平臺的安全功能是通過添加[TARGET.CAPABILITY](index.htm#target-capability)qmake的變量。 * * * ## Type Documentation ``` QSslSocket.PeerVerifyMode ``` 介紹了同行的驗證模式[QSslSocket](qsslsocket.html)。默認模式是AutoVerifyPeer ,它選擇一個合適的模式,這取決于插座的QSocket.SslMode 。 | Constant | Value | Description | | --- | --- | --- | | `QSslSocket.VerifyNone` | `0` | [QSslSocket](qsslsocket.html)不會要求對端的證書。如果你沒有興趣在連接的另一端的身份,您可以設置該模式。該連接仍然會被加密,你的socket仍會發送其本地證書給對端,如果它的要求。 | | `QSslSocket.QueryPeer` | `1` | [QSslSocket](qsslsocket.html)將要求對端的證書,但不要求該證書是有效的。當你想顯示對等體證書的詳細信息給用戶,而不會影響實際的SSL握手,這是很有用的。這種模式是默認的服務器。 | | `QSslSocket.VerifyPeer` | `2` | [QSslSocket](qsslsocket.html)會要求對方在SSL握手階段證書,并要求該證書是有效的。如果失敗,[QSslSocket](qsslsocket.html)將發射[QSslSocket.sslErrors](qsslsocket.html#sslErrors)()信號。這種模式是默認的客戶端。 | | `QSslSocket.AutoVerifyPeer` | `3` | [QSslSocket](qsslsocket.html)會自動使用QueryPeer的服務器套接字和VerifyPeer的客戶端套接字。 | 這個枚舉被引入或修改的Qt 4.4 。 **See also** [QSslSocket.peerVerifyMode](qsslsocket.html#peerVerifyMode)( ) 。 ``` QSslSocket.SslMode ``` 說明可用于連接模式[QSslSocket](qsslsocket.html)。 | Constant | Value | Description | | --- | --- | --- | | `QSslSocket.UnencryptedMode` | `0` | 套接字是未加密的。其行為是相同的[QTcpSocket](qtcpsocket.html)。 | | `QSslSocket.SslClientMode` | `1` | 套接字的客戶端SSL套接字。它可以是alreayd加密的,或者它是在SSL握手階段(參見[QSslSocket.isEncrypted](qsslsocket.html#isEncrypted)())。 | | `QSslSocket.SslServerMode` | `2` | 該插座是一個服務器端的SSL套接字。它要么已經加密的,或者它是在SSL握手階段(參見[QSslSocket.isEncrypted](qsslsocket.html#isEncrypted)())。 | * * * ## Method Documentation ``` QSslSocket.__init__ (self, QObject?parent?=?None) ``` 該_parent_的說法,如果不是沒有,原因_self_通過Qt的,而不是PyQt的擁有。 構造一個[QSslSocket](qsslsocket.html)對象。_parent_被傳遞給[QObject](qobject.html)的構造。新的套接字的[cipher](qsslcipher.html)套件被設置為靜態方法返回一個[defaultCiphers](qsslsocket.html#defaultCiphers)( ) 。 ``` QSslSocket.abort (self) ``` 中止當前連接并重置插口。不像[disconnectFromHost](qabstractsocket.html#disconnectFromHost)( ) ,這個函數立即關閉套接字,寫緩沖區清除任何掛起的數據。 **See also** [disconnectFromHost](qabstractsocket.html#disconnectFromHost)()和[close](qsslsocket.html#close)( ) 。 ``` QSslSocket.addCaCertificate (self, QSslCertificate?certificate) ``` 添加_certificate_此套接字的CA證書數據庫。握手階段中的CA證書數據庫所使用的插座,以驗證對方的證書。 要添加多個證書,使用[addCaCertificates](qsslsocket.html#addCaCertificates)( ) 。 **See also** [caCertificates](qsslsocket.html#caCertificates)()和[setCaCertificates](qsslsocket.html#setCaCertificates)( ) 。 ``` bool QSslSocket.addCaCertificates (self, QString?path, QSsl.EncodingFormat?format?=?QSsl.Pem, QRegExp.PatternSyntax?syntax?=?QRegExp.FixedString) ``` 搜索中的所有文件_path_對于證書編碼指定_format_并將它們添加到這個套接字的CA證書數據庫。_path_可以是顯式的,或者它可以包含通配符在由指定的格式_syntax_。返回True如果一個或多個證書添加到套接字的CA證書數據庫,否則返回False 。 握手階段中的CA證書數據庫所使用的插座,以驗證對方的證書。 為了更精確的控制,使用[addCaCertificate](qsslsocket.html#addCaCertificate)( ) 。 **See also** [addCaCertificate](qsslsocket.html#addCaCertificate)()和[QSslCertificate.fromPath](qsslcertificate.html#fromPath)( ) 。 ``` QSslSocket.addCaCertificates (self, list-of-QSslCertificate?certificates) ``` 添加_certificates_此套接字的CA證書數據庫。握手階段中的CA證書數據庫所使用的插座,以驗證對方的證書。 為了更精確的控制,使用[addCaCertificate](qsslsocket.html#addCaCertificate)( ) 。 **See also** [caCertificates](qsslsocket.html#caCertificates)()和[addDefaultCaCertificate](qsslsocket.html#addDefaultCaCertificate)( ) 。 ``` QSslSocket.addDefaultCaCertificate (QSslCertificate?certificate) ``` 添加_certificate_到默認的CA證書數據庫。每個SSL套接字的CA證書數據庫被初始化為默認的CA證書數據庫。 **See also** [defaultCaCertificates](qsslsocket.html#defaultCaCertificates)()和[addCaCertificates](qsslsocket.html#addCaCertificates)( ) 。 ``` bool QSslSocket.addDefaultCaCertificates (QString?path, QSsl.EncodingFormat?format?=?QSsl.Pem, QRegExp.PatternSyntax?syntax?=?QRegExp.FixedString) ``` 搜索中的所有文件_path_具有指定證書_encoding_并將它們添加到默認的CA證書數據庫。_path_可以是顯式的文件中,或者它可以包含通配符在由指定的格式_syntax_。如有CA證書被添加到默認數據庫,則返回True 。 每個SSL套接字的CA證書數據庫被初始化為默認的CA證書數據庫。 **See also** [defaultCaCertificates](qsslsocket.html#defaultCaCertificates)( )[addCaCertificates](qsslsocket.html#addCaCertificates)()和[addDefaultCaCertificate](qsslsocket.html#addDefaultCaCertificate)( ) 。 ``` QSslSocket.addDefaultCaCertificates (list-of-QSslCertificate?certificates) ``` 添加_certificates_到默認的CA證書數據庫。每個SSL套接字的CA證書數據庫被初始化為默認的CA證書數據庫。 **See also** [defaultCaCertificates](qsslsocket.html#defaultCaCertificates)()和[addCaCertificates](qsslsocket.html#addCaCertificates)( ) 。 ``` bool QSslSocket.atEnd (self) ``` 從重新實現[QIODevice.atEnd](qiodevice.html#atEnd)( ) 。 ``` int QSslSocket.bytesAvailable (self) ``` 從重新實現[QIODevice.bytesAvailable](qiodevice.html#bytesAvailable)( ) 。 返回解密后的字節是立即可用于閱讀的數量。 ``` int QSslSocket.bytesToWrite (self) ``` 從重新實現[QIODevice.bytesToWrite](qiodevice.html#bytesToWrite)( ) 。 返回正在等待被加密并寫入網絡未加密的字節數。 ``` list-of-QSslCertificate QSslSocket.caCertificates (self) ``` 返回此套接字的CA證書數據庫。握手階段中的CA證書數據庫所使用的插座,以驗證對方的證書。它可以與握手之前被moodified[addCaCertificate](qsslsocket.html#addCaCertificate)( )[addCaCertificates](qsslsocket.html#addCaCertificates)()和[setCaCertificates](qsslsocket.html#setCaCertificates)( ) 。 **Note:**在Unix中,這個方法可能會返回一個空列表,如果根證書按需加載。 **See also** [addCaCertificate](qsslsocket.html#addCaCertificate)( )[addCaCertificates](qsslsocket.html#addCaCertificates)()和[setCaCertificates](qsslsocket.html#setCaCertificates)( ) 。 ``` bool QSslSocket.canReadLine (self) ``` 從重新實現[QIODevice.canReadLine](qiodevice.html#canReadLine)( ) 。 返回True如果你能讀一而行(終止由一個單一的ASCII碼為'\ n '字符)解密字符,否則返回False 。 ``` list-of-QSslCipher QSslSocket.ciphers (self) ``` 返回此套接字的當前密碼的加密套件。在插座的握手階段該列表用于選擇一個會話密碼。密碼返回的列表是按遞減優先級進行排序。 (例如,在列表中的第一密碼是最優選的密碼) 。會話密碼將是第一個在也支持對等的列表。 默認情況下,握手階段可以選擇任何由該系統的SSL庫支持的加密算法,這可能會有所不同從系統到系統。通過此系統的SSL庫支持的密碼列表是由返回[supportedCiphers](qsslsocket.html#supportedCiphers)( ) 。你可以通過調用限制用于選擇會話密碼為這個套接字密碼列表[setCiphers](qsslsocket.html#setCiphers)( )與所支持的加密算法的子集。你可以通過調用恢復使用整套[setCiphers](qsslsocket.html#setCiphers)( )與返回列表[supportedCiphers](qsslsocket.html#supportedCiphers)( ) 。 您可以限制用于選擇會話加密的密碼清單_all_套接字通過調用[setDefaultCiphers](qsslsocket.html#setDefaultCiphers)( )與所支持的加密算法的子集。你可以通過調用恢復使用整套[setCiphers](qsslsocket.html#setCiphers)( )與返回列表[supportedCiphers](qsslsocket.html#supportedCiphers)( ) 。 **See also** [setCiphers](qsslsocket.html#setCiphers)( )[defaultCiphers](qsslsocket.html#defaultCiphers)( )[setDefaultCiphers](qsslsocket.html#setDefaultCiphers)()和[supportedCiphers](qsslsocket.html#supportedCiphers)( ) 。 ``` QSslSocket.close (self) ``` 從重新實現[QIODevice.close](qiodevice.html#close)( ) 。 ``` QSslSocket.connectToHostEncrypted (self, QString?hostName, int?port, QIODevice.OpenMode?mode?=?QIODevice.ReadWrite) ``` 開始到設備的加密連接_hostName_上_port_,使用_mode_作為[OpenMode](qiodevice.html#OpenModeFlag-enum)。這等同于調用[connectToHost](qabstractsocket.html#connectToHost)()來建立連接,然后通過調用[startClientEncryption](qsslsocket.html#startClientEncryption)( ) 。 [QSslSocket](qsslsocket.html)首先進入[HostLookupState](qabstractsocket.html#SocketState-enum)。然后,無論是進入事件循環或一個WAITFOR的... ( )函數后,它進入[ConnectingState](qabstractsocket.html#SocketState-enum),發出[connected](qabstractsocket.html#connected)( ) ,然后啟動SSL客戶端握手。在每個狀態的變化,[QSslSocket](qsslsocket.html)發出信號[stateChanged](qabstractsocket.html#stateChanged)( ) 。 啟動SSL客戶端握手,如果對等體的身份不能成立,信號經過[sslErrors](qsslsocket.html#sslErrors)()被發射。如果你想忽略錯誤并繼續連接,則必須調用[ignoreSslErrors](qsslsocket.html#ignoreSslErrors)() ,無論是從一個槽函數內部連接到[sslErrors](qsslsocket.html#sslErrors)( )信號,或在進入加密模式之前。如果[ignoreSslErrors](qsslsocket.html#ignoreSslErrors)( )沒有被調用,則連接斷開,信號[disconnected](qabstractsocket.html#disconnected)()被發射,并且[QSslSocket](qsslsocket.html)返回到[UnconnectedState](qabstractsocket.html#SocketState-enum)。 如果SSL握手成功,[QSslSocket](qsslsocket.html) emits [encrypted](qsslsocket.html#encrypted)( ) 。 ``` [QSslSocket](qsslsocket.html) socket; connect(&socket, SIGNAL(encrypted()), receiver, SLOT(socketEncrypted())); socket.connectToHostEncrypted("imap", 993); socket->write("1 CAPABILITY\r\n"); ``` **Note:**上面的例子表明,文本可以請求加密連接,以前后立即被寫入套接字[encrypted](qsslsocket.html#encrypted)()信號已經發出。在這種情況下,文本被排隊的對象,并寫入到插座_after_連接建立和[encrypted](qsslsocket.html#encrypted)()信號已經發出。 默認為_mode_ is [ReadWrite](qiodevice.html#OpenModeFlag-enum)。 如果你想創建一個[QSslSocket](qsslsocket.html)在連接的服務器端,你應該改為調用[startServerEncryption](qsslsocket.html#startServerEncryption)( )后,通過接收傳入的連接[QTcpServer](qtcpserver.html)。 **See also** [connectToHost](qabstractsocket.html#connectToHost)( )[startClientEncryption](qsslsocket.html#startClientEncryption)( )[waitForConnected](qsslsocket.html#waitForConnected)()和[waitForEncrypted](qsslsocket.html#waitForEncrypted)( ) 。 ``` QSslSocket.connectToHostEncrypted (self, QString?hostName, int?port, QString?sslPeerName, QIODevice.OpenMode?mode?=?QIODevice.ReadWrite) ``` 這是一個重載函數。 除了connectToHostEncrypted的原始行為,此重載方法使不同的主機名的用法(_sslPeerName_)的證書驗證,而不是用于TCP連接的一(_hostName_) 。 此功能被引入Qt的4.6 。 **See also** [connectToHostEncrypted](qsslsocket.html#connectToHostEncrypted)( ) 。 ``` QSslSocket.connectToHostImplementation (self, QString?hostName, int?port, QIODevice.OpenMode?openMode) ``` 這種方法也是一個Qt槽與C + +的簽名`void connectToHostImplementation(const QString&,quint16,QIODevice::OpenMode)`。 ``` list-of-QSslCertificate QSslSocket.defaultCaCertificates () ``` 返回當前默認的CA證書數據庫。這個數據庫是最初設置為系統的默認CA證書數據庫。如果沒有找到系統默認的數據庫,建立一個空數據庫將被退回。你可以用你自己的CA證書數據庫使用復蓋默認的CA證書數據庫[setDefaultCaCertificates](qsslsocket.html#setDefaultCaCertificates)( ) 。 每個SSL套接字的CA證書數據庫被初始化為默認的CA證書數據庫。 **Note:**在Unix中,這個方法可能會返回一個空列表,如果根證書按需加載。 **See also** [setDefaultCaCertificates](qsslsocket.html#setDefaultCaCertificates)()和[caCertificates](qsslsocket.html#caCertificates)( ) 。 ``` list-of-QSslCipher QSslSocket.defaultCiphers () ``` 返回默認的加密密碼套件在這個應用程序的所有插座。此列表中的套接字的握手階段時,與對等談判,以選擇一個會話密碼使用。該列表是按優先次序排列(即,在列表中的第一個密碼是最喜歡的密碼) 。 默認情況下,握手階段可以選擇任何由該系統的SSL庫支持的加密算法,這可能會有所不同從系統到系統。通過此系統的SSL庫支持的密碼列表是由返回[supportedCiphers](qsslsocket.html#supportedCiphers)( ) 。 **See also** [setDefaultCiphers](qsslsocket.html#setDefaultCiphers)()和[supportedCiphers](qsslsocket.html#supportedCiphers)( ) 。 ``` QSslSocket.disconnectFromHostImplementation (self) ``` 這種方法也是一個Qt槽與C + +的簽名`void disconnectFromHostImplementation()`。 ``` int QSslSocket.encryptedBytesAvailable (self) ``` 返回正在等待解密加密的字節數。通常情況下,這個函數將返回0 ,因為[QSslSocket](qsslsocket.html)只要它可以解密它的輸入數據。 此功能被引入Qt的4.4 。 ``` int QSslSocket.encryptedBytesToWrite (self) ``` 返回的加密的字節正在等待被寫入到網絡的數目。 此功能被引入Qt的4.4 。 ``` bool QSslSocket.flush (self) ``` 該函數將盡可能從內部寫緩沖區的底層網絡接口,而不會阻塞。如果任何數據被寫入時,該函數將返回True,否則返回False。 調用此函數,如果你需要[QSslSocket](qsslsocket.html)立即開始發送緩沖數據。成功寫入的字節數依賴于操作系統。在大多數情況下,你不需要調用這個函數,因為[QAbstractSocket](qabstractsocket.html)將自動開始發送數據,一旦控制返回到事件循環。在不存在的事件循環,調用[waitForBytesWritten](qsslsocket.html#waitForBytesWritten)( )來代替。 **See also** [write](qiodevice.html#write)()和[waitForBytesWritten](qsslsocket.html#waitForBytesWritten)( ) 。 ``` QSslSocket.ignoreSslErrors (self) ``` 這種方法也是一個Qt槽與C + +的簽名`void ignoreSslErrors()`。 這個插槽告訴[QSslSocket](qsslsocket.html)過程中忽略的錯誤[QSslSocket](qsslsocket.html)的握手階段,并繼續連接。如果你想繼續使用,即使在握手階段出現的錯誤連接,那么你必須調用這個槽,無論是從連接到一個槽[sslErrors](qsslsocket.html#sslErrors)( ) ,或之前握手階段。如果你不調用這個插槽,無論是在響應錯誤或握手之前,連接將在之后被丟棄[sslErrors](qsslsocket.html#sslErrors)()信號已經發出。 如果在SSL握手階段沒有錯誤(即對方的身份確立,沒有任何問題) ,[QSslSocket](qsslsocket.html)也不會發射[sslErrors](qsslsocket.html#sslErrors)()的信號,并且它不需要調用此函數。 **Warning:**一定要始終讓用戶檢查報告的錯誤[sslErrors](qsslsocket.html#sslErrors)( )信號,并且只從用戶的程序是確定經確認后,調用此方法。如果有意外的錯誤,連接應被中止。不檢查實際的錯誤調用此方法將最有可能帶來安全風險的應用程序。使用它以極大的關懷! **See also** [sslErrors](qsslsocket.html#sslErrors)( ) 。 ``` QSslSocket.ignoreSslErrors (self, list-of-QSslError?errors) ``` 這是一個重載函數。 這個方法告訴[QSslSocket](qsslsocket.html)忽略只在給定的誤差_errors_。 請注意,您可以在SSL錯誤設定預期的證書:如果,例如,要連接到使用自簽名證書的服務器時,請考慮下面的代碼片斷: ``` [QList](index.htm)<[QSslCertificate](qsslcertificate.html)> cert = [QSslCertificate](qsslcertificate.html).fromPath(QLatin1String("server-certificate.pem")); [QSslError](qsslerror.html) error([QSslError](qsslerror.html).SelfSignedCertificate, cert.at(0)); [QList](index.htm)<[QSslError](qsslerror.html)> expectedSslErrors; expectedSslErrors.append(error); [QSslSocket](qsslsocket.html) socket; socket.ignoreSslErrors(expectedSslErrors); socket.connectToHostEncrypted("server.tld", 443); ``` 多次調用該函數會被替換傳入以前調用的錯誤列表。您可以清除通過調用這個函數以一個空列表,你要忽略錯誤的列表。 此功能被引入Qt的4.6 。 **See also** [sslErrors](qsslsocket.html#sslErrors)( ) 。 ``` bool QSslSocket.isEncrypted (self) ``` 返回True如果套接字是加密的,否則,則返回False。 加密套接字加密被寫入調用的所有數據[write](qiodevice.html#write)()或[putChar](qiodevice.html#putChar)()之前的數據被寫入到網絡上,并解密所有傳入的數據作為數據是從網絡接收到的,在打電話之前[read](qiodevice.html#read)( )[readLine](qiodevice.html#readLine)()或[getChar](qiodevice.html#getChar)( ) 。 [QSslSocket](qsslsocket.html) emits [encrypted](qsslsocket.html#encrypted)( )當它進入加密模式。 您可以致電[sessionCipher](qsslsocket.html#sessionCipher)()找到它的加密密碼是用來加密和解密數據。 **See also** [mode](qsslsocket.html#mode)( ) 。 ``` QSslCertificate QSslSocket.localCertificate (self) ``` [](qsslcertificate.html) [返回套接字的本地](qsslcertificate.html)[certificate](qsslcertificate.html),或者一個空的證書,如果沒有本地證書已分配。 **See also** [setLocalCertificate](qsslsocket.html#setLocalCertificate)()和[privateKey](qsslsocket.html#privateKey)( ) 。 ``` SslMode QSslSocket.mode (self) ``` [](qsslsocket.html#SslMode-enum) [返回當前模式的插座;要么](qsslsocket.html#SslMode-enum)[UnencryptedMode](qsslsocket.html#SslMode-enum),其中[QSslSocket](qsslsocket.html)行為identially到[QTcpSocket](qtcpsocket.html)的,或者一個[SslClientMode](qsslsocket.html#SslMode-enum) or [SslServerMode](qsslsocket.html#SslMode-enum),其中客戶端可以是談判或加密模式。 當模式改變,[QSslSocket](qsslsocket.html) emits [modeChanged](qsslsocket.html#modeChanged)( ) **See also** [SslMode](qsslsocket.html#SslMode-enum)。 ``` QSslCertificate QSslSocket.peerCertificate (self) ``` [ 返回同行的數字證書(即您已連接到主機的直接證明) ,或空憑證,如果對等未分配證書。 對等證書握手階段中的自動檢查,所以這個功能通常用來獲取用于顯示或連接診斷目的的證書。它包含有關對等的信息,包括它的主機名,證書頒發者,和同行的公鑰。 ](qsslcertificate.html) [因為對等證書握手階段中的設置,它是安全的,從連接到一個插槽存取等證書](qsslcertificate.html)[sslErrors](qsslsocket.html#sslErrors)()信號或[encrypted](qsslsocket.html#encrypted)()信號。 如果證書無效,則返回,它可能意味著SSL握手失敗,或者它可能意味著您已連接到主機沒有證書,或者它可能意味著沒有連接。 如果你想檢查對端的完整的證書鏈,利用[peerCertificateChain](qsslsocket.html#peerCertificateChain)()來得到一次全部。 **See also** [peerCertificateChain](qsslsocket.html#peerCertificateChain)( ) 。 ``` list-of-QSslCertificate QSslSocket.peerCertificateChain (self) ``` 返回數字證書的對等的鏈,或證書列表是空的。 同行證書握手階段中的自動檢查。此功能通常用于獲取證書顯示,或用于執行連接診斷。證書包含有關對等和證書發行機構,包括主機名,發行人名稱和發行者公開密鑰的信息。 對等證書的設置[QSslSocket](qsslsocket.html)握手階段中,所以它是安全的,從連接到一個時隙調用此函數[sslErrors](qsslsocket.html#sslErrors)()信號或[encrypted](qsslsocket.html#encrypted)()信號。 如果返回空列表,它可能意味著SSL握手失敗,或者它可能意味著您已連接到主機沒有證書,或者它可能意味著沒有連接。 如果你想只得到了同行的直接證明,使用[peerCertificate](qsslsocket.html#peerCertificate)( ) 。 **See also** [peerCertificate](qsslsocket.html#peerCertificate)( ) 。 ``` int QSslSocket.peerVerifyDepth (self) ``` 返回的證書在同行中的證書鏈,如果沒有最大深度已設置在SSL握手階段,或0 (默認值)要檢查的最大數目,這表明整個證書鏈應該進行檢查。 該證書在發出訂單,開始與對端自己的證書,那么它的頒發者的證書,等檢查。 此功能被引入Qt的4.4 。 **See also** [setPeerVerifyDepth](qsslsocket.html#setPeerVerifyDepth)()和[peerVerifyMode](qsslsocket.html#peerVerifyMode)( ) 。 ``` PeerVerifyMode QSslSocket.peerVerifyMode (self) ``` [](qsslsocket.html#PeerVerifyMode-enum) [返回套接字的驗證模式。此模式模式決定是否](qsslsocket.html#PeerVerifyMode-enum)[QSslSocket](qsslsocket.html)應要求對等方的證書(即客戶端從服務器請求一個證書,或請求從客戶端證書的服務器) ,以及是否應當要求該證書是有效的。 默認模式是[AutoVerifyPeer](qsslsocket.html#PeerVerifyMode-enum),它告訴[QSslSocket](qsslsocket.html)使用[VerifyPeer](qsslsocket.html#PeerVerifyMode-enum)為客戶和[QueryPeer](qsslsocket.html#PeerVerifyMode-enum)用于服務器。 此功能被引入Qt的4.4 。 **See also** [setPeerVerifyMode](qsslsocket.html#setPeerVerifyMode)( )[peerVerifyDepth](qsslsocket.html#peerVerifyDepth)()和[mode](qsslsocket.html#mode)( ) 。 ``` QString QSslSocket.peerVerifyName (self) ``` 返回不同的主機名的證書驗證,以setPeerVerifyName或connectToHostEncrypted載。 此功能被引入Qt的4.8 。 **See also** [setPeerVerifyName](qsslsocket.html#setPeerVerifyName)()和[connectToHostEncrypted](qsslsocket.html#connectToHostEncrypted)( ) 。 ``` QSslKey QSslSocket.privateKey (self) ``` [ 返回此套接字的私鑰。 ](qsslkey.html) [**See also**](qsslkey.html) [setPrivateKey](qsslsocket.html#setPrivateKey)()和[localCertificate](qsslsocket.html#localCertificate)( ) 。 ``` QSsl.SslProtocol QSslSocket.protocol (self) ``` [](qssl.html#SslProtocol-enum) [返回套接字的SSL協議。默認情況下,](qssl.html#SslProtocol-enum)[QSsl.SecureProtocols](qssl.html#SslProtocol-enum)被使用。 **See also** [setProtocol](qsslsocket.html#setProtocol)( ) 。 ``` str QSslSocket.readData (self, int?maxlen) ``` 從重新實現[QIODevice.readData](qiodevice.html#readData)( ) 。 ``` QSslCipher QSslSocket.sessionCipher (self) ``` [](qsslcipher.html) [返回套接字的密碼](qsslcipher.html)[cipher](qsslcipher.html)或空密碼,如果是不加密的連接。套接字的密碼在會議期間握手階段設置。密碼是用于加密和解密通過套接字發送的數據。 [QSslSocket](qsslsocket.html)還提供了一些函數來設置密碼從中握手階段將最終選擇會話密碼的有序列表。這種有序列表必須到位握手階段開始之前。 **See also** [ciphers](qsslsocket.html#ciphers)( )[setCiphers](qsslsocket.html#setCiphers)( )[setDefaultCiphers](qsslsocket.html#setDefaultCiphers)( )[defaultCiphers](qsslsocket.html#defaultCiphers)()和[supportedCiphers](qsslsocket.html#supportedCiphers)( ) 。 ``` QSslSocket.setCaCertificates (self, list-of-QSslCertificate?certificates) ``` 設置此套接字的CA證書數據庫是_certificates_。證書數據庫之前必須設置為SSL握手。握手階段中的CA證書數據庫所使用的插座,以驗證對方的證書。 CA證書數據庫可以通過調用這個函數的返回通過CA證書列表被重置為當前默認的CA證書數據庫[defaultCaCertificates](qsslsocket.html#defaultCaCertificates)( ) 。 **See also** [caCertificates](qsslsocket.html#caCertificates)()和[defaultCaCertificates](qsslsocket.html#defaultCaCertificates)( ) 。 ``` QSslSocket.setCiphers (self, list-of-QSslCipher?ciphers) ``` 加密的加密套件為這個套接字設置為_ciphers_,其中必須包含在返回的列表中的密碼子集[supportedCiphers](qsslsocket.html#supportedCiphers)( ) 。 限制密碼套件必須在握手階段,那里的會話密碼被選為前完成。 **See also** [ciphers](qsslsocket.html#ciphers)( )[setDefaultCiphers](qsslsocket.html#setDefaultCiphers)()和[supportedCiphers](qsslsocket.html#supportedCiphers)( ) 。 ``` QSslSocket.setCiphers (self, QString?ciphers) ``` 加密的加密套件為這個套接字設置為_ciphers_,這是密碼套件名稱的冒號分隔的列表。在密碼中列出優先順序,從最優先的密碼。例如: ``` [QSslSocket](qsslsocket.html) socket; socket.setCiphers("DHE-RSA-AES256-SHA:DHE-DSS-AES256-SHA:AES256-SHA"); ``` 在每個密碼名稱_ciphers_必須在返回的列表中選擇一個加密的名稱[supportedCiphers](qsslsocket.html#supportedCiphers)( ) 。限制密碼套件必須在握手階段,那里的會話密碼被選為前完成。 **See also** [ciphers](qsslsocket.html#ciphers)( )[setDefaultCiphers](qsslsocket.html#setDefaultCiphers)()和[supportedCiphers](qsslsocket.html#supportedCiphers)( ) 。 ``` QSslSocket.setDefaultCaCertificates (list-of-QSslCertificate?certificates) ``` 設置默認的CA證書數據庫_certificates_。默認的CA證書數據庫最初設置為系統的默認CA證書數據庫。您可以使用這個功能你自己的CA證書數據庫復蓋默認的CA證書數據庫。 每個SSL套接字的CA證書數據庫被初始化為默認的CA證書數據庫。 **See also** [defaultCaCertificates](qsslsocket.html#defaultCaCertificates)()和[addDefaultCaCertificate](qsslsocket.html#addDefaultCaCertificate)( ) 。 ``` QSslSocket.setDefaultCiphers (list-of-QSslCipher?ciphers) ``` 設置默認的加密密碼套件在這個應用程序的所有套接字_ciphers_,其中必須包含在返回的列表中的密碼子集[supportedCiphers](qsslsocket.html#supportedCiphers)( ) 。 限制默認的密碼套件僅影響履行握手階段的默認密碼套件已經被改變后, SSL套接字。 **See also** [setCiphers](qsslsocket.html#setCiphers)( )[defaultCiphers](qsslsocket.html#defaultCiphers)()和[supportedCiphers](qsslsocket.html#supportedCiphers)( ) 。 ``` QSslSocket.setLocalCertificate (self, QSslCertificate?certificate) ``` 設置套接字的本地證書_certificate_。如果您需要確認您的身份到對端的本地證書是必要的。這是一起用私有密鑰;如果設置了本地證書,還必須設置專用密鑰。 本地證書和私鑰總是必要的服務器套接字,但也很少使用客戶端套接字,如果服務器要求客戶端進行身份驗證。 **See also** [localCertificate](qsslsocket.html#localCertificate)()和[setPrivateKey](qsslsocket.html#setPrivateKey)( ) 。 ``` QSslSocket.setLocalCertificate (self, QString?path, QSsl.EncodingFormat?format?=?QSsl.Pem) ``` 這是一個重載函數。 設置套接字的本地[certificate](qsslcertificate.html)在文件中找到的第一個_path_,這是根據指定的解析_format_。 ``` QSslSocket.setPeerVerifyDepth (self, int?depth) ``` 設置證書在同行中的證書鏈在SSL握手階段進行檢查的最大數量,以_depth_。設置為0的深度表示沒有最大深度被設定,表明整個證書鏈應進行檢查。 該證書在發出訂單,開始與對端自己的證書,那么它的頒發者的證書,等檢查。 此功能被引入Qt的4.4 。 **See also** [peerVerifyDepth](qsslsocket.html#peerVerifyDepth)()和[setPeerVerifyMode](qsslsocket.html#setPeerVerifyMode)( ) 。 ``` QSslSocket.setPeerVerifyMode (self, PeerVerifyMode?mode) ``` 設置套接字的驗證模式_mode_。這種模式決定是否[QSslSocket](qsslsocket.html)應要求對等方的證書(即客戶端從服務器請求一個證書,或請求從客戶端證書的服務器) ,以及是否應當要求該證書是有效的。 默認模式是[AutoVerifyPeer](qsslsocket.html#PeerVerifyMode-enum),它告訴[QSslSocket](qsslsocket.html)使用[VerifyPeer](qsslsocket.html#PeerVerifyMode-enum)為客戶和[QueryPeer](qsslsocket.html#PeerVerifyMode-enum)用于服務器。 設置此模式下的加密開始后具有當前連接沒有影響。 此功能被引入Qt的4.4 。 **See also** [peerVerifyMode](qsslsocket.html#peerVerifyMode)( )[setPeerVerifyDepth](qsslsocket.html#setPeerVerifyDepth)()和[mode](qsslsocket.html#mode)( ) 。 ``` QSslSocket.setPeerVerifyName (self, QString?hostName) ``` 設置一個不同的主機名,由下式給出_hostName_,證書驗證,而不是用于該TCP連接的那個。 此功能被引入Qt的4.8 。 **See also** [peerVerifyName](qsslsocket.html#peerVerifyName)()和[connectToHostEncrypted](qsslsocket.html#connectToHostEncrypted)( ) 。 ``` QSslSocket.setPrivateKey (self, QSslKey?key) ``` 設置套接字的私人[key](qsslkey.html)至_key_。私鑰和當地[certificate](qsslcertificate.html)所使用的客戶端和服務器必須證明自己身份的SSL同行。 密鑰和本地證書是必需的,如果你正在創建一個SSL服務器套接字。如果要創建一個SSL客戶端套接字,密鑰和本地證書是如果你的客戶端必須確定自己的SSL服務器所需。 **See also** [privateKey](qsslsocket.html#privateKey)()和[setLocalCertificate](qsslsocket.html#setLocalCertificate)( ) 。 ``` QSslSocket.setPrivateKey (self, QString?fileName, QSsl.KeyAlgorithm?algorithm?=?QSsl.Rsa, QSsl.EncodingFormat?format?=?QSsl.Pem, QByteArray?passPhrase?=?QByteArray()) ``` 這是一個重載函數。 讀取字符串的文件_fileName_并使用指定的解碼它_algorithm_和編碼_format_構造一個[SSL key](qsslkey.html)。如果編碼的密鑰進行加密,_passPhrase_用于解密。 插座的私有密鑰被設置為所構建的關鍵。私鑰和當地[certificate](qsslcertificate.html)所使用的客戶端和服務器必須證明自己身份的SSL同行。 密鑰和本地證書是必需的,如果你正在創建一個SSL服務器套接字。如果要創建一個SSL客戶端套接字,密鑰和本地證書是如果你的客戶端必須確定自己的SSL服務器所需。 **See also** [privateKey](qsslsocket.html#privateKey)()和[setLocalCertificate](qsslsocket.html#setLocalCertificate)( ) 。 ``` QSslSocket.setProtocol (self, QSsl.SslProtocol?protocol) ``` 設置套接字的SSL協議_protocol_。這將影響到下一個啟動的握手;對已經加密套接字調用這個函數不會影響套接字的協議。 **See also** [protocol](qsslsocket.html#protocol)( ) 。 ``` QSslSocket.setReadBufferSize (self, int?size) ``` 載的大小[QSslSocket](qsslsocket.html)的內部讀緩沖區是_size_字節。 此功能被引入Qt的4.4 。 ``` bool QSslSocket.setSocketDescriptor (self, int?socketDescriptor, QAbstractSocket.SocketState?state?=?QAbstractSocket.ConnectedState, QIODevice.OpenMode?mode?=?QIODevice.ReadWrite) ``` 初始化[QSslSocket](qsslsocket.html)與本地套接字描述符_socketDescriptor_。返回True如果_socketDescriptor_被接受為有效的套接字描述符,否則返回False 。該插座是由指定的模式打開_openMode_,并進入由指定的套接字狀態_state_。 **Note:**這是不可能的初始化兩個插座使用相同的本地套接字描述符。 **See also** [socketDescriptor](qabstractsocket.html#socketDescriptor)( ) 。 ``` QSslSocket.setSocketOption (self, QAbstractSocket.SocketOption?option, QVariant?value) ``` 設置給定_option_由所描述的值_value_。 此功能被引入Qt的4.6 。 **See also** [socketOption](qsslsocket.html#socketOption)( ) 。 ``` QSslSocket.setSslConfiguration (self, QSslConfiguration?config) ``` 設置套接字的SSL配置是內容_configuration_。該函數設置本地證書,加密,私鑰和CA證書與儲存在_configuration_。 這是不可能的,設置SSL的狀態相關的字段。 此功能被引入Qt的4.4 。 **See also** [sslConfiguration](qsslsocket.html#sslConfiguration)( )[setLocalCertificate](qsslsocket.html#setLocalCertificate)( )[setPrivateKey](qsslsocket.html#setPrivateKey)( )[setCaCertificates](qsslsocket.html#setCaCertificates)()和[setCiphers](qsslsocket.html#setCiphers)( ) 。 ``` QVariant QSslSocket.socketOption (self, QAbstractSocket.SocketOption?option) ``` 返回的值_option_選項。 此功能被引入Qt的4.6 。 **See also** [setSocketOption](qsslsocket.html#setSocketOption)( ) 。 ``` QSslConfiguration QSslSocket.sslConfiguration (self) ``` [ 返回套接字的SSL配置狀態。套接字的缺省SSL配置是使用默認的密碼,默認的CA證書,沒有本地私有密鑰或證書。 SSL配置還包含可隨時間而改變,恕不另行通知欄。 此功能被引入Qt的4.4 。 ](qsslconfiguration.html) [**See also**](qsslconfiguration.html) [setSslConfiguration](qsslsocket.html#setSslConfiguration)( )[localCertificate](qsslsocket.html#localCertificate)( )[peerCertificate](qsslsocket.html#peerCertificate)( )[peerCertificateChain](qsslsocket.html#peerCertificateChain)( )[sessionCipher](qsslsocket.html#sessionCipher)( )[privateKey](qsslsocket.html#privateKey)( )[ciphers](qsslsocket.html#ciphers)()和[caCertificates](qsslsocket.html#caCertificates)( ) 。 ``` list-of-QSslError QSslSocket.sslErrors (self) ``` 返回最近發生的SSL錯誤的列表。這是相同的列表作為[QSslSocket](qsslsocket.html)通過sslErrors ( )信號通過。如果連接已加密,沒有錯誤,此函數將返回一個空列表。 **See also** [connectToHostEncrypted](qsslsocket.html#connectToHostEncrypted)( ) 。 ``` QSslSocket.startClientEncryption (self) ``` 這種方法也是一個Qt槽與C + +的簽名`void startClientEncryption()`。 啟動一個客戶端連接的延遲SSL握手。這個函數可以在插座是在被稱為[ConnectedState](qabstractsocket.html#SocketState-enum)但仍處于[UnencryptedMode](qsslsocket.html#SslMode-enum)。如果尚未連接,或者如果它已被加密,該功能沒有任何影響。 實現STARTTLS功能的客戶經常使用延遲的SSL握手。大多數其他客戶端可以使用避免直接調用此函數[connectToHostEncrypted](qsslsocket.html#connectToHostEncrypted)()代替,它會自動執行握手。 **See also** [connectToHostEncrypted](qsslsocket.html#connectToHostEncrypted)()和[startServerEncryption](qsslsocket.html#startServerEncryption)( ) 。 ``` QSslSocket.startServerEncryption (self) ``` 這種方法也是一個Qt槽與C + +的簽名`void startServerEncryption()`。 啟動服務器連接延遲的SSL握手。這個函數可以在插座是在被稱為[ConnectedState](qabstractsocket.html#SocketState-enum)但仍處于[UnencryptedMode](qsslsocket.html#SslMode-enum)。如果沒有連接,或者已被加密,則該功能沒有任何影響。 對于服務器套接字,則調用這個函數來啟動SSL握手的唯一途徑。大多數服務器將在接收到連接立即調用該函數,或作為已接受一個協議特定的命令進入SSL模式(例如的結果,服務器可能收到的響應串“ STARTTLS \ r \ N”通過調用這個函數) 。 實現SSL服務器最常用的方法是創建一個子類[QTcpServer](qtcpserver.html)并重新實現[QTcpServer.incomingConnection](qtcpserver.html#incomingConnection)( ) 。返回的套接字描述符,然后傳遞到[QSslSocket.setSocketDescriptor](qsslsocket.html#setSocketDescriptor)( ) 。 **See also** [connectToHostEncrypted](qsslsocket.html#connectToHostEncrypted)()和[startClientEncryption](qsslsocket.html#startClientEncryption)( ) 。 ``` list-of-QSslCipher QSslSocket.supportedCiphers () ``` 返回本系統支持的加密算法列表。此列表是由系統的SSL庫和設置可能會有所不同從系統到系統中。 **See also** [defaultCiphers](qsslsocket.html#defaultCiphers)( )[ciphers](qsslsocket.html#ciphers)()和[setCiphers](qsslsocket.html#setCiphers)( ) 。 ``` bool QSslSocket.supportsSsl () ``` 返回True如果該平臺支持SSL ,否則返回False 。如果平臺不支持SSL ,套接字將在連接階段失敗。 ``` list-of-QSslCertificate QSslSocket.systemCaCertificates () ``` 這個功能提供由操作系統提供的CA證書數據庫。這個函數返回的CA證書數據庫是用來初始化返回的數據庫[defaultCaCertificates](qsslsocket.html#defaultCaCertificates)( ) 。你可以換成你自己的數據庫[setDefaultCaCertificates](qsslsocket.html#setDefaultCaCertificates)( ) 。 **See also** [caCertificates](qsslsocket.html#caCertificates)( )[defaultCaCertificates](qsslsocket.html#defaultCaCertificates)()和[setDefaultCaCertificates](qsslsocket.html#setDefaultCaCertificates)( ) 。 ``` bool QSslSocket.waitForBytesWritten (self, int?msecs?=?30000) ``` 從重新實現[QIODevice.waitForBytesWritten](qiodevice.html#waitForBytesWritten)( ) 。 ``` bool QSslSocket.waitForConnected (self, int?msecs?=?30000) ``` 等待,直到套接字連接,或_msecs_ milliseconds, whichever happens first. If the connection has been established, this function returns true; otherwise it returns false. **See also** [QAbstractSocket.waitForConnected](qabstractsocket.html#waitForConnected)( ) 。 ``` bool QSslSocket.waitForDisconnected (self, int?msecs?=?30000) ``` 等待,直到該套接字已斷開或_msecs_毫秒,以先到者為準。如果連接已經斷開,則該函數返回True,否則返回False 。 **See also** [QAbstractSocket.waitForDisconnected](qabstractsocket.html#waitForDisconnected)( ) 。 ``` bool QSslSocket.waitForEncrypted (self, int?msecs?=?30000) ``` 等待,直到插座已完成SSL握手,并已發出[encrypted](qsslsocket.html#encrypted)() ,或_msecs_毫秒,以先到者為準。如果[encrypted](qsslsocket.html#encrypted)( )已發出,則該函數返回True,否則(例如,插座斷開,或在SSL握手失敗) ,則返回False 。 下面的例子最多等待1秒到加密套接字: ``` socket->connectToHostEncrypted("imap", 993); if (socket->waitForEncrypted(1000)) qDebug("Encrypted!"); ``` 如果毫秒為-1 ,此功能將不會超時。 **See also** [startClientEncryption](qsslsocket.html#startClientEncryption)( )[startServerEncryption](qsslsocket.html#startServerEncryption)( )[encrypted](qsslsocket.html#encrypted)()和[isEncrypted](qsslsocket.html#isEncrypted)( ) 。 ``` bool QSslSocket.waitForReadyRead (self, int?msecs?=?30000) ``` 從重新實現[QIODevice.waitForReadyRead](qiodevice.html#waitForReadyRead)( ) 。 ``` int QSslSocket.writeData (self, str?data) ``` 從重新實現[QIODevice.writeData](qiodevice.html#writeData)( ) 。 * * * ## Qt Signal Documentation ``` void encrypted () ``` 這是該信號的默認超載。 這個信號被發射時[QSslSocket](qsslsocket.html)進入加密模式。之后此信號被發射[QSslSocket.isEncrypted](qsslsocket.html#isEncrypted)( )將返回True ,并在插座所有進一步的傳輸將被加密。 **See also** [QSslSocket.connectToHostEncrypted](qsslsocket.html#connectToHostEncrypted)()和[QSslSocket.isEncrypted](qsslsocket.html#isEncrypted)( ) 。 ``` void encryptedBytesWritten (qint64) ``` 這是該信號的默認超載。 這個信號被發射時[QSslSocket](qsslsocket.html)它的加密數據寫入到網絡。該_written_參數包含已成功寫入的字節數。 此功能被引入Qt的4.4 。 **See also** [QIODevice.bytesWritten](qiodevice.html#bytesWritten)( ) 。 ``` void modeChanged (QSslSocket::SslMode) ``` 這是該信號的默認超載。 這個信號被發射時[QSslSocket](qsslsocket.html)從變化[QSslSocket.UnencryptedMode](qsslsocket.html#SslMode-enum)要么[QSslSocket.SslClientMode](qsslsocket.html#SslMode-enum) or [QSslSocket.SslServerMode](qsslsocket.html#SslMode-enum)。_mode_是新的模式。 **See also** [QSslSocket.mode](qsslsocket.html#mode)( ) 。 ``` void peerVerifyError (const QSslError&) ``` 這是該信號的默認超載。 [QSslSocket](qsslsocket.html)可以在SSL握手期間發出此信號幾次,加密已經建立之前,以表明在建立對等體的身份已經發生了錯誤。該_error_是通常表示[QSslSocket](qsslsocket.html)無法安全地識別對端。 這個信號提供了一個早期跡象時,什么是錯的。通過連接到這個信號時,您可以手動選擇推倒從連接槽內的連接握手完成之前。如果不采取行動,[QSslSocket](qsslsocket.html)將繼續發光[QSslSocket.sslErrors](qsslsocket.html#sslErrors)( ) 。 此功能被引入Qt的4.4 。 **See also** [sslErrors](qsslsocket.html#sslErrors)( ) 。 ``` void sslErrors (const QList<QSslError>&) ``` 這是該信號的默認超載。 [QSslSocket](qsslsocket.html)SSL握手之后發出這一信號,表明在建立對等體的身份的一個或多個錯誤時有發生。該錯誤通常是一個跡象表明,[QSslSocket](qsslsocket.html)無法安全地識別對端。除非采取任何行動,在此之后信號已經發出的連接將被丟棄。 如果你想繼續連接,盡管已發生的錯誤,你必須調用[QSslSocket.ignoreSslErrors](qsslsocket.html#ignoreSslErrors)()從連接到該信號的時隙內。如果你需要訪問在以后的錯誤列表,你可以調用[sslErrors](qsslsocket.html#sslErrors)( ) (不帶參數) 。 _errors_包含一個或多個錯誤,防止[QSslSocket](qsslsocket.html)從驗證對等體的身份。 注意:您不能使用[Qt.QueuedConnection](qt.html#ConnectionType-enum)當連接到該信號,或呼叫[QSslSocket.ignoreSslErrors](qsslsocket.html#ignoreSslErrors)( )不會有任何效果。 **See also** [peerVerifyError](qsslsocket.html#peerVerifyError)( ) 。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看