<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # QAbstractSocket Class Reference ## [[QtNetwork](index.htm) module] 該QAbstractSocket類提供通用于所有的套接字類型的基本功能。[More...](#details) 繼承[QIODevice](qiodevice.html)。 通過繼承[QTcpSocket](qtcpsocket.html)和[QUdpSocket](qudpsocket.html)。 ### Types * `enum NetworkLayerProtocol { IPv4Protocol, IPv6Protocol, UnknownNetworkLayerProtocol }` * `enum SocketError { ConnectionRefusedError, RemoteHostClosedError, HostNotFoundError, SocketAccessError, ..., UnknownSocketError }` * `enum SocketOption { LowDelayOption, KeepAliveOption, MulticastTtlOption, MulticastLoopbackOption }` * `enum SocketState { UnconnectedState, HostLookupState, ConnectingState, ConnectedState, ..., ClosingState }` * `enum SocketType { TcpSocket, UdpSocket, UnknownSocketType }` ### Methods * `__init__ (self, SocketType?socketType, QObject?parent)` * `abort (self)` * `bool atEnd (self)` * `int bytesAvailable (self)` * `int bytesToWrite (self)` * `bool canReadLine (self)` * `close (self)` * `connectToHost (self, QString?hostName, int?port, QIODevice.OpenMode?mode?=?QIODevice.ReadWrite)` * `connectToHost (self, QHostAddress?address, int?port, QIODevice.OpenMode?mode?=?QIODevice.ReadWrite)` * `connectToHostImplementation (self, QString?hostName, int?port, QIODevice.OpenMode?mode?=?QIODevice.ReadWrite)` * `disconnectFromHost (self)` * `disconnectFromHostImplementation (self)` * `SocketError error (self)` * `bool flush (self)` * `bool isSequential (self)` * `bool isValid (self)` * `QHostAddress localAddress (self)` * `int localPort (self)` * `QHostAddress peerAddress (self)` * `QString peerName (self)` * `int peerPort (self)` * `QNetworkProxy proxy (self)` * `int readBufferSize (self)` * `str readData (self, int?maxlen)` * `str readLineData (self, int?maxlen)` * `setLocalAddress (self, QHostAddress?address)` * `setLocalPort (self, int?port)` * `setPeerAddress (self, QHostAddress?address)` * `setPeerName (self, QString?name)` * `setPeerPort (self, int?port)` * `setProxy (self, QNetworkProxy?networkProxy)` * `setReadBufferSize (self, int?size)` * `bool setSocketDescriptor (self, int?socketDescriptor, SocketState?state?=?QAbstractSocket.ConnectedState, QIODevice.OpenMode?mode?=?QIODevice.ReadWrite)` * `setSocketError (self, SocketError?socketError)` * `setSocketOption (self, SocketOption?option, QVariant?value)` * `setSocketState (self, SocketState?state)` * `int socketDescriptor (self)` * `QVariant socketOption (self, SocketOption?option)` * `SocketType socketType (self)` * `SocketState state (self)` * `bool waitForBytesWritten (self, int?msecs?=?30000)` * `bool waitForConnected (self, int?msecs?=?30000)` * `bool waitForDisconnected (self, int?msecs?=?30000)` * `bool waitForReadyRead (self, int?msecs?=?30000)` * `int writeData (self, str?data)` ### Qt Signals * `void connected ()` * `void disconnected ()` * `void error (QAbstractSocket::SocketError)` * `void hostFound ()` * `void proxyAuthenticationRequired (const QNetworkProxy&,QAuthenticator *)` * `void stateChanged (QAbstractSocket::SocketState)` * * * ## Detailed Description 該QAbstractSocket類提供通用于所有的套接字類型的基本功能。 QAbstractSocket為基類[QTcpSocket](qtcpsocket.html)和[QUdpSocket](qudpsocket.html)并包含這兩個類的所有常見功能。如果你需要一個插座,你有兩種選擇: * Instantiate [QTcpSocket](qtcpsocket.html) or [QUdpSocket](qudpsocket.html). * Create a native socket descriptor, instantiate QAbstractSocket, and call [setSocketDescriptor](qabstractsocket.html#setSocketDescriptor)() to wrap the native socket. TCP(傳輸控制協議)是一種可靠的,面向流的,面向連接的傳輸協議。 UDP(用戶數據報協議)是一種不可靠的,面向數據報的,無連接的協議。在實踐中,這意味著TCP是更適合于數據的連續發送,而當可靠性是不重要的,輕量級的UDP都可以使用。 QAbstractSocket的API,最統一的兩個協議之間的差異。例如,雖然UDP是無連接的,[connectToHost](qabstractsocket.html#connectToHost)( )建立了UDP套接字的虛擬連接,使您能夠在或多或少的相同方式使用QAbstractSocket不管底層協議。在內部, QAbstractSocket記得傳遞給地址和端口[connectToHost](qabstractsocket.html#connectToHost)() ,和類似的功能[read](qiodevice.html#read)()和[write](qiodevice.html#write)()中使用這些值。 在任何時候, QAbstractSocket具有狀態(返回[state](qabstractsocket.html#state)())。初始狀態是[UnconnectedState](qabstractsocket.html#SocketState-enum)。后調用[connectToHost](qabstractsocket.html#connectToHost)() ,插座首先進入[HostLookupState](qabstractsocket.html#SocketState-enum)。如果發現主機, QAbstractSocket進入[ConnectingState](qabstractsocket.html#SocketState-enum)和發射[hostFound](qabstractsocket.html#hostFound)()信號。當連接已經建立時,它進入[ConnectedState](qabstractsocket.html#SocketState-enum)并發出[connected](qabstractsocket.html#connected)( ) 。如果發生錯誤,在任何階段,[error](qabstractsocket.html#error)()被發射。每當狀態發生變化,[stateChanged](qabstractsocket.html#stateChanged)()被發射。為方便起見,[isValid](qabstractsocket.html#isValid)( )返回True如果套接字已準備好進行讀取和寫入,但請注意,插座的狀態必須[ConnectedState](qabstractsocket.html#SocketState-enum)閱讀和寫作之前可能發生。 通過調用讀取或寫入數據[read](qiodevice.html#read)()或[write](qiodevice.html#write)( ) ,或者使用的方便功能[readLine](qiodevice.html#readLine)()和[readAll](qiodevice.html#readAll)( ) 。 QAbstractSocket也繼承[getChar](qiodevice.html#getChar)( )[putChar](qiodevice.html#putChar)()和[ungetChar](qiodevice.html#ungetChar)( )從[QIODevice](qiodevice.html),其中單字節工作。該[bytesWritten](qiodevice.html#bytesWritten)當數據已經被寫入到插座(即,當客戶端已讀出的數據)( )信號被發射。注意Qt不限制寫入緩沖區的大小。您可以通過聽這個信號監視它的大小。 該[readyRead](qiodevice.html#readyRead)每一個新的數據塊已到達的時間()信號被發射。[bytesAvailable](qabstractsocket.html#bytesAvailable)()然后返回可用于讀取的字節數。通常情況下,您將在[readyRead](qiodevice.html#readyRead)()信號到一個槽和閱讀有所有可用的數據。如果你不立即讀取所有數據,其馀數據仍然可用后,任何新進入的數據將被追加到QAbstractSocket的內部讀緩沖區。來限制讀緩沖區的大小,調用[setReadBufferSize](qabstractsocket.html#setReadBufferSize)( ) 。 關閉套接字,調用[disconnectFromHost](qabstractsocket.html#disconnectFromHost)( ) 。 QAbstractSocket進入[QAbstractSocket.ClosingState](qabstractsocket.html#SocketState-enum)。在所有掛起的數據已經寫入到socket , QAbstractSocket實際上關閉套接字,進入QAbstractSocket.ClosedState ,并發出[disconnected](qabstractsocket.html#disconnected)( ) 。如果您想立即中止連接,丟棄所有未決的數據,調用[abort](qabstractsocket.html#abort)( )來代替。如果遠程主機關閉連接, QAbstractSocket會發出錯誤([QAbstractSocket.RemoteHostClosedError](qabstractsocket.html#SocketError-enum)) ,在此期間,插座狀態仍將是[ConnectedState](qabstractsocket.html#SocketState-enum),然后在[disconnected](qabstractsocket.html#disconnected)()信號將被發射。 所連接的對端的端口和地址是通過調用取[peerPort](qabstractsocket.html#peerPort)()和[peerAddress](qabstractsocket.html#peerAddress)( ) 。[peerName](qabstractsocket.html#peerName)()返回對端的主機名,它被傳遞到[connectToHost](qabstractsocket.html#connectToHost)( ) 。[localPort](qabstractsocket.html#localPort)()和[localAddress](qabstractsocket.html#localAddress)( )返回本地套接字的端口和地址。 QAbstractSocket提供了一組掛起調用線程,直到某個信號發射的功能。這些功能可以用來實現阻塞套接字: * [waitForConnected](qabstractsocket.html#waitForConnected)() blocks until a connection has been established. * [waitForReadyRead](qabstractsocket.html#waitForReadyRead)() blocks until new data is available for reading. * [waitForBytesWritten](qabstractsocket.html#waitForBytesWritten)() blocks until one payload of data has been written to the socket. * [waitForDisconnected](qabstractsocket.html#waitForDisconnected)() blocks until the connection has closed. 我們顯示一個例子: ``` int numRead = 0, numReadTotal = 0; char buffer[50]; forever { numRead = socket.read(buffer, 50); // do whatever with array numReadTotal += numRead; if (numRead == 0 && !socket.waitForReadyRead()) break; } ``` If [waitForReadyRead()](qiodevice.html#waitForReadyRead)返回False ,該連接已關閉或發生錯誤。 與阻塞套接字編程是一個非阻塞套接字編程完全不同。阻塞套接字并不需要一個事件循環,并通常會導致簡單的代碼。然而,在一個圖形用戶界面的應用程序,阻塞插座只應在非GUI線程使用,以避免凍結的用戶界面。請參閱[network/fortuneclient](index.htm)和[network/blockingfortuneclient](index.htm)舉例而言,兩種方法的概述。 **Note:**我們不鼓勵使用的阻塞函數信號一起。應該使用其中的兩種可能性。 QAbstractSocket可以被用于[QTextStream](qtextstream.html)和[QDataStream](qdatastream.html)的流運算符(運算符\u003c\u003c ()和operator \u003e\u003e ( ) ) 。有一個問題需要注意,雖然:你必須確保有足夠的數據可用嘗試使用運算符來讀取它之前\u003e\u003e ( ) 。 * * * ## Type Documentation ``` QAbstractSocket.NetworkLayerProtocol ``` 這個枚舉變量描述的Qt使用的網絡層協議的值。 | Constant | Value | Description | | --- | --- | --- | | `QAbstractSocket.IPv4Protocol` | `0` | IPv4的 | | `QAbstractSocket.IPv6Protocol` | `1` | IPv6的 | | `QAbstractSocket.UnknownNetworkLayerProtocol` | `-1` | 除IPv4和IPv6 | **See also** [QHostAddress.protocol](qhostaddress.html#protocol)( ) 。 ``` QAbstractSocket.SocketError ``` 這個枚舉說明可能發生的套接字錯誤。 | Constant | Value | Description | | --- | --- | --- | | `QAbstractSocket.ConnectionRefusedError` | `0` | 連接被對等(或超時)拒絕。 | | `QAbstractSocket.RemoteHostClosedError` | `1` | 遠程主機關閉了連接。請注意,客戶端套接字(也就是該套接字)遠程關閉通知發出后將會關閉。 | | `QAbstractSocket.HostNotFoundError` | `2` | 主機地址未找到。 | | `QAbstractSocket.SocketAccessError` | `3` | 套接字操作失敗,因為該應用程序缺乏必要的特權。 | | `QAbstractSocket.SocketResourceError` | `4` | 本地系統跑出來的資源(例如,太多的套接字)的。 | | `QAbstractSocket.SocketTimeoutError` | `5` | 套接字操作超時。 | | `QAbstractSocket.DatagramTooLargeError` | `6` | 數據報比操作系統的限制(其可以是低至8192字節)大。 | | `QAbstractSocket.NetworkError` | `7` | 與網絡(例如,網絡電纜被意外拔出)時發生錯誤。 | | `QAbstractSocket.AddressInUseError` | `8` | 指定的地址[QUdpSocket.bind](qudpsocket.html#bind)()已經在使用中并且被設置為獨占的。 | | `QAbstractSocket.SocketAddressNotAvailableError` | `9` | 指定的地址[QUdpSocket.bind](qudpsocket.html#bind)( )不屬于主機。 | | `QAbstractSocket.UnsupportedSocketOperationError` | `10` | 不是由本地操作系統(例如,缺乏支持IPv6 )的支持請求的套接字操作。 | | `QAbstractSocket.ProxyAuthenticationRequiredError` | `12` | 該插座是使用代理,而代理服務器需要身份驗證。 | | `QAbstractSocket.SslHandshakeFailedError` | `13` | 在SSL / TLS握手失敗,因此連接已關閉(僅在使用[QSslSocket](qsslsocket.html)) (此值被引入4.4 。 ) | | `QAbstractSocket.UnfinishedSocketOperationError` | `11` | 使用QAbstractSocketEngine只,最后的操作嘗試尚未完成(仍然在后臺進程) 。 (這個值被引入4.4 。 ) | | `QAbstractSocket.ProxyConnectionRefusedError` | `14` | 無法聯系的代理服務器,因為連接到該服務器被拒絕(這個值被引入4.5 。 ) | | `QAbstractSocket.ProxyConnectionClosedError` | `15` | 到代理服務器的連接意外被關閉(連接到最終的同行建立之前) (此值是在4.5推出。 ) | | `QAbstractSocket.ProxyConnectionTimeoutError` | `16` | 到代理服務器的連接超時或代理服務器停在認證階段響應。 (這個值被引入4.5 。 ) | | `QAbstractSocket.ProxyNotFoundError` | `17` | 設置代理地址[setProxy](qabstractsocket.html#setProxy)( ) (或應用程序代理)未找到。 (這個值被引入4.5 。 ) | | `QAbstractSocket.ProxyProtocolError` | `18` | 在連接協商與代理服務器,因為從代理服務器的響應無法被理解。 (這個值被引入4.5 。 ) | | `QAbstractSocket.UnknownSocketError` | `-1` | 發生不明的錯誤。 | **See also** [QAbstractSocket.error](qabstractsocket.html#error)( ) 。 ``` QAbstractSocket.SocketOption ``` 這個枚舉表示可以在一個插座可以設置的選項。如果需要的話,它們可以在接收之后進行設置[connected](qabstractsocket.html#connected)()從插座或收到一個新的套接字從后信號[QTcpServer](qtcpserver.html)。 | Constant | Value | Description | | --- | --- | --- | | `QAbstractSocket.LowDelayOption` | `0` | 嘗試優化插座低延遲。對于[QTcpSocket](qtcpsocket.html)這將設置TCP_NODELAY選項,并禁用Nagle算法。將此值設置為1來啟用。 | | `QAbstractSocket.KeepAliveOption` | `1` | 將此值設置為1,以啟用SO_KEEPALIVE套接字選項 | | `QAbstractSocket.MulticastTtlOption` | `2` | 將其設置為一個整數值來設置IP_MULTICAST_TTL (TTL組播數據報)套接字選項。 | | `QAbstractSocket.MulticastLoopbackOption` | `3` | 將此值設置為1 ,使IP_MULTICAST_LOOP (多播環回)套接字選項。 | 這個枚舉被引入或修改的Qt 4.6 。 **See also** [QAbstractSocket.setSocketOption](qabstractsocket.html#setSocketOption)()和[QAbstractSocket.socketOption](qabstractsocket.html#socketOption)( ) 。 ``` QAbstractSocket.SocketState ``` 這個枚舉變量描述了不同的狀態,其中一個插座即可。 | Constant | Value | Description | | --- | --- | --- | | `QAbstractSocket.UnconnectedState` | `0` | 該套接字沒有連接。 | | `QAbstractSocket.HostLookupState` | `1` | 該插座是執行主機名查找。 | | `QAbstractSocket.ConnectingState` | `2` | 插座已經開始建立連接。 | | `QAbstractSocket.ConnectedState` | `3` | 連接建立。 | | `QAbstractSocket.BoundState` | `4` | 套接字綁定到一個地址和端口(用于服務器) 。 | | `QAbstractSocket.ClosingState` | `6` | 該插座是即將關閉(數據仍可能等待寫入) 。 | | `QAbstractSocket.ListeningState` | `5` | 僅供內部使用。 | **See also** [QAbstractSocket.state](qabstractsocket.html#state)( ) 。 ``` QAbstractSocket.SocketType ``` 這個枚舉變量描述傳輸層協議。 | Constant | Value | Description | | --- | --- | --- | | `QAbstractSocket.TcpSocket` | `0` | TCP | | `QAbstractSocket.UdpSocket` | `1` | UDP | | `QAbstractSocket.UnknownSocketType` | `-1` | 除了TCP和UDP | **See also** [QAbstractSocket.socketType](qabstractsocket.html#socketType)( ) 。 * * * ## Method Documentation ``` QAbstractSocket.__init__ (self, SocketType?socketType, QObject?parent) ``` 該_parent_的說法,如果不是沒有,原因_self_通過Qt的,而不是PyQt的擁有。 創建類型的新抽象插座_socketType_。該_parent_參數被傳遞給[QObject](qobject.html)的構造。 **See also** [socketType](qabstractsocket.html#socketType)( )[QTcpSocket](qtcpsocket.html)和[QUdpSocket](qudpsocket.html)。 ``` QAbstractSocket.abort (self) ``` 中止當前連接并重置插口。不像[disconnectFromHost](qabstractsocket.html#disconnectFromHost)( ) ,這個函數立即關閉套接字,丟棄在寫緩沖區任何掛起的數據。 **See also** [disconnectFromHost](qabstractsocket.html#disconnectFromHost)()和[close](qabstractsocket.html#close)( ) 。 ``` bool QAbstractSocket.atEnd (self) ``` 從重新實現[QIODevice.atEnd](qiodevice.html#atEnd)( ) 。 如果沒有更多的數據,目前可供讀取,則返回True ,否則返回False 。 讀數從插座在一個循環中的數據時,此功能是最常用的。例如: ``` // This slot is connected to QAbstractSocket.readyRead() void SocketClass.readyReadSlot() { while (!socket.atEnd()) { [QByteArray](qbytearray.html) data = socket.read(100); .... } } ``` **See also** [bytesAvailable](qabstractsocket.html#bytesAvailable)()和[readyRead](qiodevice.html#readyRead)( ) 。 ``` int QAbstractSocket.bytesAvailable (self) ``` 從重新實現[QIODevice.bytesAvailable](qiodevice.html#bytesAvailable)( ) 。 返回傳入的字節正在等待被讀取的次數。 **See also** [bytesToWrite](qabstractsocket.html#bytesToWrite)()和[read](qiodevice.html#read)( ) 。 ``` int QAbstractSocket.bytesToWrite (self) ``` 從重新實現[QIODevice.bytesToWrite](qiodevice.html#bytesToWrite)( ) 。 返回正在等待被寫入的字節數。該字節被寫入時,控制返回到事件循環或當[flush](qabstractsocket.html#flush)()被調用。 **See also** [bytesAvailable](qabstractsocket.html#bytesAvailable)()和[flush](qabstractsocket.html#flush)( ) 。 ``` bool QAbstractSocket.canReadLine (self) ``` 從重新實現[QIODevice.canReadLine](qiodevice.html#canReadLine)( ) 。 返回True如果一行數據可以從套接字讀取,否則返回False 。 **See also** [readLine](qiodevice.html#readLine)( ) 。 ``` QAbstractSocket.close (self) ``` 從重新實現[QIODevice.close](qiodevice.html#close)( ) 。 關閉套接字的I / O設備,斷開與主機插座的連接,關閉套接字,并重置姓名,地址,端口號和底層套接字描述符。 See [QIODevice.close](qiodevice.html#close)( ),用于當一個I / O設備被關閉時發生的動作的說明。 **See also** [abort](qabstractsocket.html#abort)( ) 。 ``` QAbstractSocket.connectToHost (self, QString?hostName, int?port, QIODevice.OpenMode?mode?=?QIODevice.ReadWrite) ``` 企圖使一個連接_hostName_在給定的_port_。 該插座是在給定的開_openMode_并首次進入[HostLookupState](qabstractsocket.html#SocketState-enum),然后執行一個主機名查找_hostName_。如果查找成功,[hostFound](qabstractsocket.html#hostFound)()被發射和[QAbstractSocket](qabstractsocket.html)進入[ConnectingState](qabstractsocket.html#SocketState-enum)。然后,它嘗試連接到由查詢返回的地址或地址。最后,如果建立了連接,[QAbstractSocket](qabstractsocket.html)進入[ConnectedState](qabstractsocket.html#SocketState-enum)并發出[connected](qabstractsocket.html#connected)( ) 。 在任何點,該插座能發射[error](qabstractsocket.html#error)()來通知發生了錯誤。 _hostName_可以是字符串形式(例如,“ 43.195.83.32 ” )的IP地址,也可以是主機名(例如,“ example.com ” ) 。[QAbstractSocket](qabstractsocket.html)會做只有當需要查找。_port_是在本地字節順序。 **See also** [state](qabstractsocket.html#state)( )[peerName](qabstractsocket.html#peerName)( )[peerAddress](qabstractsocket.html#peerAddress)( )[peerPort](qabstractsocket.html#peerPort)()和[waitForConnected](qabstractsocket.html#waitForConnected)( ) 。 ``` QAbstractSocket.connectToHost (self, QHostAddress?address, int?port, QIODevice.OpenMode?mode?=?QIODevice.ReadWrite) ``` 這是一個重載函數。 企圖使一個連接_address_端口_port_。 ``` QAbstractSocket.connectToHostImplementation (self, QString?hostName, int?port, QIODevice.OpenMode?mode?=?QIODevice.ReadWrite) ``` 這種方法也是一個Qt槽與C + +的簽名`void connectToHostImplementation(const QString&,quint16,QIODevice::OpenMode = QIODevice.ReadWrite)`。 包含的實施[connectToHost](qabstractsocket.html#connectToHost)( ) 。 企圖使一個連接_hostName_在給定的_port_。該插座是在給定的開_openMode_。 這個函數是Qt 4.1中引入。 ``` QAbstractSocket.disconnectFromHost (self) ``` 試圖關閉套接字。如果有掛起的數據等待寫入,[QAbstractSocket](qabstractsocket.html)將進入[ClosingState](qabstractsocket.html#SocketState-enum)并等待,直到所有數據已經寫入。最終,將進入[UnconnectedState](qabstractsocket.html#SocketState-enum)和發射[disconnected](qabstractsocket.html#disconnected)()信號。 **See also** [connectToHost](qabstractsocket.html#connectToHost)( ) 。 ``` QAbstractSocket.disconnectFromHostImplementation (self) ``` 這種方法也是一個Qt槽與C + +的簽名`void disconnectFromHostImplementation()`。 包含的實施[disconnectFromHost](qabstractsocket.html#disconnectFromHost)( ) 。 這個函數是Qt 4.1中引入。 ``` SocketError QAbstractSocket.error (self) ``` [ 返回上次發生錯誤的類型。 ](qabstractsocket.html#SocketError-enum) [**See also**](qabstractsocket.html#SocketError-enum) [state](qabstractsocket.html#state)()和[errorString](qiodevice.html#errorString)( ) 。 ``` bool QAbstractSocket.flush (self) ``` 該函數將盡可能從內部寫緩沖區的底層網絡接口,而不會阻塞。如果任何數據被寫入時,該函數將返回True,否則返回False。 調用此函數,如果你需要[QAbstractSocket](qabstractsocket.html)立即開始發送緩沖數據。成功寫入的字節數依賴于操作系統。在大多數情況下,你不需要調用這個函數,因為[QAbstractSocket](qabstractsocket.html)將自動開始發送數據,一旦控制返回到事件循環。在不存在的事件循環,調用[waitForBytesWritten](qabstractsocket.html#waitForBytesWritten)( )來代替。 **See also** [write](qiodevice.html#write)()和[waitForBytesWritten](qabstractsocket.html#waitForBytesWritten)( ) 。 ``` bool QAbstractSocket.isSequential (self) ``` 從重新實現[QIODevice.isSequential](qiodevice.html#isSequential)( ) 。 ``` bool QAbstractSocket.isValid (self) ``` 返回True如果套接字是有效的,并準備使用,否則返回False 。 **Note:**套接字的狀態必須[ConnectedState](qabstractsocket.html#SocketState-enum)閱讀和寫作之前可能發生。 **See also** [state](qabstractsocket.html#state)( ) 。 ``` QHostAddress QAbstractSocket.localAddress (self) ``` [](qhostaddress.html) [返回本地套接字如果可用的主機地址,否則返回](qhostaddress.html)[QHostAddress.Null](qhostaddress.html#SpecialAddress-enum)。 這通常是在主機的主IP地址,但也可以是[QHostAddress.LocalHost](qhostaddress.html#SpecialAddress-enum)( 127.0.0.1)來連接到本地主機。 **See also** [localPort](qabstractsocket.html#localPort)( )[peerAddress](qabstractsocket.html#peerAddress)()和[setLocalAddress](qabstractsocket.html#setLocalAddress)( ) 。 ``` int QAbstractSocket.localPort (self) ``` 返回本地套接字如果可用的主機端口號(本地字節順序) ,否則返回0 。 **See also** [localAddress](qabstractsocket.html#localAddress)( )[peerPort](qabstractsocket.html#peerPort)()和[setLocalPort](qabstractsocket.html#setLocalPort)( ) 。 ``` QHostAddress QAbstractSocket.peerAddress (self) ``` [](qhostaddress.html) [返回所連接的對端的地址,如果套接字是在](qhostaddress.html)[ConnectedState](qabstractsocket.html#SocketState-enum)否則返回[QHostAddress.Null](qhostaddress.html#SpecialAddress-enum)。 **See also** [peerName](qabstractsocket.html#peerName)( )[peerPort](qabstractsocket.html#peerPort)( )[localAddress](qabstractsocket.html#localAddress)()和[setPeerAddress](qabstractsocket.html#setPeerAddress)( ) 。 ``` QString QAbstractSocket.peerName (self) ``` 所指定的返回對端的名稱[connectToHost](qabstractsocket.html#connectToHost)( ) ,或空[QString](qstring.html)如果[connectToHost](qabstractsocket.html#connectToHost)( )尚未被調用。 **See also** [peerAddress](qabstractsocket.html#peerAddress)( )[peerPort](qabstractsocket.html#peerPort)()和[setPeerName](qabstractsocket.html#setPeerName)( ) 。 ``` int QAbstractSocket.peerPort (self) ``` 返回所連接的對端的端口,如果套接字是在[ConnectedState](qabstractsocket.html#SocketState-enum)否則返回0 。 **See also** [peerAddress](qabstractsocket.html#peerAddress)( )[localPort](qabstractsocket.html#localPort)()和[setPeerPort](qabstractsocket.html#setPeerPort)( ) 。 ``` QNetworkProxy QAbstractSocket.proxy (self) ``` [](qnetworkproxy.html) [返回此套接字的網絡代理。默認情況下,](qnetworkproxy.html)[QNetworkProxy.DefaultProxy](qnetworkproxy.html#ProxyType-enum)被使用,這意味著該套接字將查詢應用程序的默認代理設置。 這個函數是Qt 4.1中引入。 **See also** [setProxy](qabstractsocket.html#setProxy)( )[QNetworkProxy](qnetworkproxy.html)和[QNetworkProxyFactory](qnetworkproxyfactory.html)。 ``` int QAbstractSocket.readBufferSize (self) ``` 返回內部讀緩沖區的大小。這限制了數據的客戶端可以在打電話之前收取的金額[read](qiodevice.html#read)()或[readAll](qiodevice.html#readAll)( ) 。 0讀緩沖區的大小(默認值)意味著緩沖區有沒有大小限制,以確保數據不會丟失。 **See also** [setReadBufferSize](qabstractsocket.html#setReadBufferSize)()和[read](qiodevice.html#read)( ) 。 ``` str QAbstractSocket.readData (self, int?maxlen) ``` 從重新實現[QIODevice.readData](qiodevice.html#readData)( ) 。 ``` str QAbstractSocket.readLineData (self, int?maxlen) ``` 從重新實現[QIODevice.readLineData](qiodevice.html#readLineData)( ) 。 ``` QAbstractSocket.setLocalAddress (self, QHostAddress?address) ``` 設置到一個連接的本地端的地址_address_。 您可以在子類中調用這個函數[QAbstractSocket](qabstractsocket.html)改變的返回值[localAddress](qabstractsocket.html#localAddress)連接后()函數已經建立。此功能是常用的代理服務器連接虛擬連接設置。 請注意,此功能對套接字的本地地址的連接(例如,之前沒有綁定,[QUdpSocket.bind](qudpsocket.html#bind)())。 這個函數是Qt 4.1中引入。 **See also** [localAddress](qabstractsocket.html#localAddress)( )[setLocalPort](qabstractsocket.html#setLocalPort)()和[setPeerAddress](qabstractsocket.html#setPeerAddress)( ) 。 ``` QAbstractSocket.setLocalPort (self, int?port) ``` 設置端口上連接的本地端_port_。 您可以在子類中調用這個函數[QAbstractSocket](qabstractsocket.html)改變的返回值[localPort](qabstractsocket.html#localPort)連接后()函數已經建立。此功能是常用的代理服務器連接虛擬連接設置。 請注意,這個函數不套接字的本地端口綁定的連接(如前,[QUdpSocket.bind](qudpsocket.html#bind)())。 這個函數是Qt 4.1中引入。 **See also** [localPort](qabstractsocket.html#localPort)( )[localAddress](qabstractsocket.html#localAddress)( )[setLocalAddress](qabstractsocket.html#setLocalAddress)()和[setPeerPort](qabstractsocket.html#setPeerPort)( ) 。 ``` QAbstractSocket.setPeerAddress (self, QHostAddress?address) ``` 設置連接到的遠程端的地址_address_。 您可以在子類中調用這個函數[QAbstractSocket](qabstractsocket.html)改變的返回值[peerAddress](qabstractsocket.html#peerAddress)連接后()函數已經建立。此功能是常用的代理服務器連接虛擬連接設置。 這個函數是Qt 4.1中引入。 **See also** [peerAddress](qabstractsocket.html#peerAddress)( )[setPeerPort](qabstractsocket.html#setPeerPort)()和[setLocalAddress](qabstractsocket.html#setLocalAddress)( ) 。 ``` QAbstractSocket.setPeerName (self, QString?name) ``` 設置遠端的主機名_name_。 您可以在子類中調用這個函數[QAbstractSocket](qabstractsocket.html)改變的返回值[peerName](qabstractsocket.html#peerName)連接后()函數已經建立。此功能是常用的代理服務器連接虛擬連接設置。 這個函數是Qt 4.1中引入。 **See also** [peerName](qabstractsocket.html#peerName)( ) 。 ``` QAbstractSocket.setPeerPort (self, int?port) ``` 設置連接到的遠程端的端口_port_。 您可以在子類中調用這個函數[QAbstractSocket](qabstractsocket.html)改變的返回值[peerPort](qabstractsocket.html#peerPort)連接后()函數已經建立。此功能是常用的代理服務器連接虛擬連接設置。 這個函數是Qt 4.1中引入。 **See also** [peerPort](qabstractsocket.html#peerPort)( )[setPeerAddress](qabstractsocket.html#setPeerAddress)()和[setLocalPort](qabstractsocket.html#setLocalPort)( ) 。 ``` QAbstractSocket.setProxy (self, QNetworkProxy?networkProxy) ``` 設置此套接字明確網絡代理_networkProxy_。 要禁用使用代理的這個插座,使用[QNetworkProxy.NoProxy](qnetworkproxy.html#ProxyType-enum)代理類型: ``` socket->setProxy([QNetworkProxy](qnetworkproxy.html).NoProxy); ``` 對于代理的默認值是[QNetworkProxy.DefaultProxy](qnetworkproxy.html#ProxyType-enum),這意味著套接字將使用應用程序設置:如果將代理設置QNetworkProxy.setApplicationProxy ,它將使用,否則,如果一個工廠設置QNetworkProxyFactory.setApplicationProxyFactory ,它會查詢該工廠類型[QNetworkProxyQuery.TcpSocket](qnetworkproxyquery.html#QueryType-enum)。 這個函數是Qt 4.1中引入。 **See also** [proxy](qabstractsocket.html#proxy)( )[QNetworkProxy](qnetworkproxy.html)和[QNetworkProxyFactory.queryProxy](qnetworkproxyfactory.html#queryProxy)( ) 。 ``` QAbstractSocket.setReadBufferSize (self, int?size) ``` 載的大小[QAbstractSocket](qabstractsocket.html)的內部讀緩沖區是_size_字節。 如果緩沖區大小被限制為一定的大小,[QAbstractSocket](qabstractsocket.html)將不緩存數據超過此大小。特殊情況下,為0的緩沖區大小意味著讀緩存器是無限的,所有輸入的數據進行緩沖。這是默認的。 此選項很有用,如果你只在讀取特定時間點的數據(例如,在實時流應用程序),或者如果你想保護你的插座對接收的數據過多,最終可能導致應用程序用完內存。 只[QTcpSocket](qtcpsocket.html) uses [QAbstractSocket](qabstractsocket.html)的內部緩沖區;[QUdpSocket](qudpsocket.html)不使用任何緩沖在所有的,而是依賴于由操作系統提供的隱式緩沖。正因為如此,調用這個函數上[QUdpSocket](qudpsocket.html)沒有任何影響。 **See also** [readBufferSize](qabstractsocket.html#readBufferSize)()和[read](qiodevice.html#read)( ) 。 ``` bool QAbstractSocket.setSocketDescriptor (self, int?socketDescriptor, SocketState?state?=?QAbstractSocket.ConnectedState, QIODevice.OpenMode?mode?=?QIODevice.ReadWrite) ``` 初始化[QAbstractSocket](qabstractsocket.html)與本地套接字描述符_socketDescriptor_。返回True如果_socketDescriptor_被接受為有效的套接字描述符,否則返回False 。該插座是由指定的模式打開_openMode_,并進入由指定的套接字狀態_socketState_。 **Note:**這是不可能的初始化兩個抽象插座,相同的本地套接字描述符。 **See also** [socketDescriptor](qabstractsocket.html#socketDescriptor)( ) 。 ``` QAbstractSocket.setSocketError (self, SocketError?socketError) ``` 設置最后對發生錯誤的類型_socketError_。 **See also** [setSocketState](qabstractsocket.html#setSocketState)()和[setErrorString](qiodevice.html#setErrorString)( ) 。 ``` QAbstractSocket.setSocketOption (self, SocketOption?option, QVariant?value) ``` 設置給定_option_由所描述的值_value_。 此功能被引入Qt的4.6 。 **See also** [socketOption](qabstractsocket.html#socketOption)( ) 。 ``` QAbstractSocket.setSocketState (self, SocketState?state) ``` 設置套接字的狀態,以_state_。 **See also** [state](qabstractsocket.html#state)( ) 。 ``` int QAbstractSocket.socketDescriptor (self) ``` 返回的本地套接字描述符[QAbstractSocket](qabstractsocket.html)如果對象是可用的,否則返回-1 。 如果套接字使用[QNetworkProxy](qnetworkproxy.html),返回的描述符可能無法與原生socket函數使用。 套接字描述符時,無法使用[QAbstractSocket](qabstractsocket.html)在[UnconnectedState](qabstractsocket.html#SocketState-enum)。 **See also** [setSocketDescriptor](qabstractsocket.html#setSocketDescriptor)( ) 。 ``` QVariant QAbstractSocket.socketOption (self, SocketOption?option) ``` 返回的值_option_選項。 此功能被引入Qt的4.6 。 **See also** [setSocketOption](qabstractsocket.html#setSocketOption)( ) 。 ``` SocketType QAbstractSocket.socketType (self) ``` [ 返回套接字的類型( TCP,UDP或其他) 。 ](qabstractsocket.html#SocketType-enum) [**See also**](qabstractsocket.html#SocketType-enum) [QTcpSocket](qtcpsocket.html)和[QUdpSocket](qudpsocket.html)。 ``` SocketState QAbstractSocket.state (self) ``` [ 返回套接字的狀態。 ](qabstractsocket.html#SocketState-enum) [**See also**](qabstractsocket.html#SocketState-enum) [error](qabstractsocket.html#error)( ) 。 ``` bool QAbstractSocket.waitForBytesWritten (self, int?msecs?=?30000) ``` 從重新實現[QIODevice.waitForBytesWritten](qiodevice.html#waitForBytesWritten)( ) 。 ``` bool QAbstractSocket.waitForConnected (self, int?msecs?=?30000) ``` 等待,直到套接字連接,高達_msecs_毫秒。如果連接已經建立,該函數將返回True,否則返回False 。當它返回False的情況下,你可以調用[error](qabstractsocket.html#error)()來確定錯誤的原因。 下面的例子最多等待1秒,以建立連接: ``` socket->connectToHost("imap", 143); if (socket->waitForConnected(1000)) qDebug("Connected!"); ``` 如果毫秒為-1 ,此功能將不會超時。 **Note:**此功能可能稍長比等待_msecs_取決于所花費的時間來完成主機查找。 **Note:**多次調用該函數不累積的時間。如果函數超時,連接過程將被中止。 **See also** [connectToHost](qabstractsocket.html#connectToHost)()和[connected](qabstractsocket.html#connected)( ) 。 ``` bool QAbstractSocket.waitForDisconnected (self, int?msecs?=?30000) ``` 等待,直到插座斷開連接,直至_msecs_毫秒。如果連接已經斷開,則該函數返回True,否則返回False 。當它返回False的情況下,你可以調用[error](qabstractsocket.html#error)()來確定錯誤的原因。 下面的例子最多等待一秒鐘的連接被關閉: ``` socket->disconnectFromHost(); if (socket->state() == [QAbstractSocket](qabstractsocket.html).UnconnectedState || socket->waitForDisconnected(1000)) qDebug("Disconnected!"); ``` 如果毫秒為-1 ,此功能將不會超時。 **See also** [disconnectFromHost](qabstractsocket.html#disconnectFromHost)()和[close](qabstractsocket.html#close)( ) 。 ``` bool QAbstractSocket.waitForReadyRead (self, int?msecs?=?30000) ``` 從重新實現[QIODevice.waitForReadyRead](qiodevice.html#waitForReadyRead)( ) 。 此功能塊,直到新的數據可供讀取和[readyRead()](qiodevice.html#readyRead)信號已經發出。之后,該函數將超時_msecs_毫秒,默認的超時時間為30000毫秒。 該函數返回True,如果[readyRead](qiodevice.html#readyRead)( )信號被發射,并有可供讀取新數據,否則返回False (如果發生錯誤或者操作超時) 。 **See also** [waitForBytesWritten](qabstractsocket.html#waitForBytesWritten)( ) 。 ``` int QAbstractSocket.writeData (self, str?data) ``` 從重新實現[QIODevice.writeData](qiodevice.html#writeData)( ) 。 * * * ## Qt Signal Documentation ``` void connected () ``` 這是該信號的默認超載。 之后此信號被發射[connectToHost](qabstractsocket.html#connectToHost)( )被調用,并連接已成功建立。 **Note:**在一些操作系統上的連接()信號可以直接從所發射的[connectToHost](qabstractsocket.html#connectToHost)( )調用來連接到本地主機。 **See also** [connectToHost](qabstractsocket.html#connectToHost)()和[disconnected](qabstractsocket.html#disconnected)( ) 。 ``` void disconnected () ``` 這是該信號的默認超載。 當插座已斷開這個信號被發射。 **Warning:**如果您需要刪除[sender](qobject.html#sender)在連接到它的插槽這個信號的( ) ,請使用[deleteLater()](qobject.html#deleteLater)功能。 **See also** [connectToHost](qabstractsocket.html#connectToHost)( )[disconnectFromHost](qabstractsocket.html#disconnectFromHost)()和[abort](qabstractsocket.html#abort)( ) 。 ``` void error (QAbstractSocket::SocketError) ``` 這是該信號的默認超載。 這個信號被發射時發生錯誤之后。該_socketError_參數描述發生錯誤的類型。 [QAbstractSocket.SocketError](qabstractsocket.html#SocketError-enum)是不是注冊的元類型,所以排隊的連接,你將不得不用它注冊[Q_DECLARE_METATYPE](qmetatype.html#Q_DECLARE_METATYPE)()和[qRegisterMetaType](qmetatype.html#qRegisterMetaType)( ) 。 **See also** [error](qabstractsocket.html#error)( )[errorString](qiodevice.html#errorString)()和[Creating Custom Qt Types](index.htm)。 ``` void hostFound () ``` 這是該信號的默認超載。 之后此信號被發射[connectToHost](qabstractsocket.html#connectToHost)( )被調用并且主機查找成功。 **Note:**由于Qt的4.6.3[QAbstractSocket](qabstractsocket.html)可以從發射hostFound ()直接[connectToHost](qabstractsocket.html#connectToHost)( )調用,因為一個DNS結果可能已經被緩存。 **See also** [connected](qabstractsocket.html#connected)( ) 。 ``` void proxyAuthenticationRequired (const QNetworkProxy&,QAuthenticator *) ``` 這是該信號的默認超載。 這個信號可以被發射時,一_proxy_需要進行身份驗證時使用。該_authenticator_對象可以被填充在與必需的細節,以便驗證和持續的連接。 **Note:**這是不可能使用QueuedConnection連接到該信號,就好像所述認證沒有被填充了新的信息時,該信號返回的連接失敗。 此功能被引入Qt的4.3 。 **See also** [QAuthenticator](qauthenticator.html)和[QNetworkProxy](qnetworkproxy.html)。 ``` void stateChanged (QAbstractSocket::SocketState) ``` 這是該信號的默認超載。 這個信號被發射時[QAbstractSocket](qabstractsocket.html)的狀態變化。該_socketState_參數是新的狀態。 [QAbstractSocket.SocketState](qabstractsocket.html#SocketState-enum)是不是注冊的元類型,所以排隊的連接,你將不得不與Q_REGISTER_METATYPE (注冊它)和[qRegisterMetaType](qmetatype.html#qRegisterMetaType)( ) 。 **See also** [state](qabstractsocket.html#state)()和[Creating Custom Qt Types](index.htm)。
                  <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>

                              哎呀哎呀视频在线观看