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

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # QUdpSocket Class Reference ## [[QtNetwork](index.htm) module] 該QUdpSocket類提供了一個UDP套接字。[More...](#details) 繼承[QAbstractSocket](qabstractsocket.html)。 ### Types * `enum BindFlag { DefaultForPlatform, ShareAddress, DontShareAddress, ReuseAddressHint }` * `class **[BindMode](index.htm)**` ### Methods * `__init__ (self, QObject?parent?=?None)` * `bool bind (self, QHostAddress?address, int?port)` * `bool bind (self, int?port?=?0)` * `bool bind (self, QHostAddress?address, int?port, BindMode?mode)` * `bool bind (self, int?port, BindMode?mode)` * `bool hasPendingDatagrams (self)` * `bool joinMulticastGroup (self, QHostAddress?groupAddress)` * `bool joinMulticastGroup (self, QHostAddress?groupAddress, QNetworkInterface?iface)` * `bool leaveMulticastGroup (self, QHostAddress?groupAddress)` * `bool leaveMulticastGroup (self, QHostAddress?groupAddress, QNetworkInterface?iface)` * `QNetworkInterface multicastInterface (self)` * `int pendingDatagramSize (self)` * `(str, QHostAddress?host, int?port) readDatagram (self, int?maxlen)` * `setMulticastInterface (self, QNetworkInterface?iface)` * `int writeDatagram (self, str?data, QHostAddress?host, int?port)` * `int writeDatagram (self, QByteArray?datagram, QHostAddress?host, int?port)` * * * ## Detailed Description 該QUdpSocket類提供了一個UDP套接字。 UDP(用戶數據報協議)是一個輕量級的,不可靠的,面向數據報的,無連接的協議。它可以在可靠性并不重要使用。 QUdpSocket是的一個子類[QAbstractSocket](qabstractsocket.html)它允許您發送和接收UDP數據包。 使用這個類中最常用的方法是結合使用的地址和端口[bind](qudpsocket.html#bind)( ) ,然后調用[writeDatagram](qudpsocket.html#writeDatagram)()和[readDatagram](qudpsocket.html#readDatagram)()來傳輸數據。如果你想使用標準[QIODevice](qiodevice.html) functions [read](qiodevice.html#read)( )[readLine](qiodevice.html#readLine)( )[write](qiodevice.html#write)( )等,你必須首先通過直接調用連接的套接字同行[connectToHost](qabstractsocket.html#connectToHost)( ) 。 套接字發出的[bytesWritten](qiodevice.html#bytesWritten)()信號每一個數據報被寫入網絡時間。如果你只是想發送數據報,你不需要調用[bind](qudpsocket.html#bind)( ) 。 該[readyRead](qiodevice.html#readyRead)()信號被發射時的數據報到達。在這種情況下,[hasPendingDatagrams](qudpsocket.html#hasPendingDatagrams)( )返回True 。通話[pendingDatagramSize](qudpsocket.html#pendingDatagramSize)()以獲得第一待處理數據包的大小,并[readDatagram](qudpsocket.html#readDatagram)()來讀取它。 **Note:**當您收到傳入的數據報應該讀的[readyRead](qiodevice.html#readyRead)()信號,否則,該信號將不被發射的下一個數據報。 例如: ``` void Server.initSocket() { udpSocket = new QUdpSocket(this); udpSocket->bind([QHostAddress](qhostaddress.html).LocalHost, 7755); connect(udpSocket, SIGNAL(readyRead()), this, SLOT(readPendingDatagrams())); } void Server.readPendingDatagrams() { while (udpSocket->hasPendingDatagrams()) { [QByteArray](qbytearray.html) datagram; datagram.resize(udpSocket->pendingDatagramSize()); [QHostAddress](qhostaddress.html) sender; [quint16](index.htm#quint16-typedef) senderPort; udpSocket->readDatagram(datagram.data(), datagram.size(), &sender, &senderPort); processTheDatagram(datagram); } } ``` QUdpSocket還支持UDP多播。使用[joinMulticastGroup](qudpsocket.html#joinMulticastGroup)()和[leaveMulticastGroup](qudpsocket.html#leaveMulticastGroup)( )來控制組成員,并[QAbstractSocket.MulticastTtlOption](qabstractsocket.html#SocketOption-enum)和[QAbstractSocket.MulticastLoopbackOption](qabstractsocket.html#SocketOption-enum)設置TTL和環回套接字選項。使用[setMulticastInterface](qudpsocket.html#setMulticastInterface)( )來控制出接口為組播數據報,并[multicastInterface](qudpsocket.html#multicastInterface)()進行查詢。 隨著QUdpSocket ,您也可以使用建立一個UDP服務器的虛擬連接[connectToHost](qabstractsocket.html#connectToHost)() ,然后使用[read](qiodevice.html#read)()和[write](qiodevice.html#write)( )不指定接收器為每個數據報交換數據報。 該[Broadcast Sender](index.htm),[Broadcast Receiver](index.htm),[Multicast Sender](index.htm)和[Multicast Receiver](index.htm)示例說明了如何使用QUdpSocket中的應用。 ### Symbian Platform Security Requirements 在Symbian ,它使用這個類的進程必須有`NetworkServices`平臺的安全能力。如果客戶端程序缺乏這種能力,操作將導致恐慌。 平臺的安全功能是通過添加[TARGET.CAPABILITY](index.htm#target-capability)qmake的變量。 * * * ## Type Documentation ``` QUdpSocket.BindFlag ``` 這個枚舉變量描述了不同的標志,您可以通過修改的行為[QUdpSocket.bind](qudpsocket.html#bind)( ) 。 **Note:**基于Symbian操作系統的綁定標志的行為依賴于過程capabilties 。如果過程中有NetworkControl能力,即使地址和端口已經被綁定了另一個套接字與任何標志的綁定嘗試與ReuseAddressHint總是會成功的。如果進程沒有NetworkControl能力,綁定企圖地址和端口已經綁定了另一個套接字總是會失敗。 | Constant | Value | Description | | --- | --- | --- | | `QUdpSocket.ShareAddress` | `0x1` | 允許其他服務綁定到同一個地址和端口。當多個進程共享聽相同的地址和端口的單個服務的負載,這是有用的(例如,一個Web服務器與多個預分叉聽眾可以大大提高響應時間) 。然而,因為任何服務被允許重新綁定,此選項是受到一定的安全考慮。請注意,與ReuseAddressHint結合這個選項,你也可以讓你的服務重新綁定現有的共享地址。在Unix上,這相當于SO_REUSEADDR套接字選項。在Windows上,這個選項被忽略。 | | `QUdpSocket.DontShareAddress` | `0x2` | 完全綁定的地址和端口,所以沒有其他的服務被允許重新綁定。通過將此選項[QUdpSocket.bind](qudpsocket.html#bind)( ) ,這樣保證了在successs ,你的服務是唯一一個監聽地址和端口。沒有服務被允許重新綁定,即使他們通過ReuseAddressHint 。此選項提供了比ShareAddress更安全,但在某些操作系統,它需要你以管理員權限運行的服務器。在Unix和Mac OS X ,不共享是用于綁定的地址和端口的默認行為,所以這個選項被忽略。在Windows中,此選項使用SO_EXCLUSIVEADDRUSE套接字選項。 | | `QUdpSocket.ReuseAddressHint` | `0x4` | 提供一個提示[QUdpSocket](qudpsocket.html)它應該嘗試重新綁定服務,即使地址和端口已經綁定了另一個套接字。在Windows上,這相當于SO_REUSEADDR套接字選項。在Unix中,該選項將被忽略。 | | `QUdpSocket.DefaultForPlatform` | `0x0` | 在當前平臺的默認選項。在Unix和Mac OS X ,這相當于( DontShareAddress + ReuseAddressHint ) ,而在Windows相當于ShareAddress ,其。 | 這個枚舉被引入或修改的Qt 4.1 。 該BindMode類型是一個typedef為[QFlags](index.htm)\u003cBindFlag\u003e 。它存儲BindFlag值的或組合。 * * * ## Method Documentation ``` QUdpSocket.__init__ (self, QObject?parent?=?None) ``` 該_parent_的說法,如果不是沒有,原因_self_通過Qt的,而不是PyQt的擁有。 創建[QUdpSocket](qudpsocket.html)對象。 _parent_被傳遞到[QObject](qobject.html)構造函數。 **See also** [socketType](qabstractsocket.html#socketType)( ) 。 ``` bool QUdpSocket.bind (self, QHostAddress?address, int?port) ``` 將此套接字綁定到地址_address_和端口_port_。當結合時,信號[readyRead](qiodevice.html#readyRead)( )每當一個UDP數據報到達指定的地址和端口發出。此功能是寫的UDP服務器非常有用。 如果成功,該函數返回True,插座進入[BoundState](qabstractsocket.html#SocketState-enum)否則返回False。 該插座是使用綁定的[DefaultForPlatform](qudpsocket.html#BindFlag-enum) [BindMode](qudpsocket.html#BindFlag-enum)。 **See also** [readDatagram](qudpsocket.html#readDatagram)( ) 。 ``` bool QUdpSocket.bind (self, int?port?=?0) ``` 這是一個重載函數。 結合_address_端口_port_使用[BindMode](qudpsocket.html#BindFlag-enum) _mode_。 這個函數是Qt 4.1中引入。 ``` bool QUdpSocket.bind (self, QHostAddress?address, int?port, BindMode?mode) ``` 這是一個重載函數。 結合[QHostAddress](qhostaddress.html):任何端口_port_。 ``` bool QUdpSocket.bind (self, int?port, BindMode?mode) ``` 這是一個重載函數。 結合[QHostAddress](qhostaddress.html):任何端口_port_使用[BindMode](qudpsocket.html#BindFlag-enum) _mode_。 這個函數是Qt 4.1中引入。 ``` bool QUdpSocket.hasPendingDatagrams (self) ``` 返回True如果至少有一個數據報被等待被讀取,否則返回False 。 **See also** [pendingDatagramSize](qudpsocket.html#pendingDatagramSize)()和[readDatagram](qudpsocket.html#readDatagram)( ) 。 ``` bool QUdpSocket.joinMulticastGroup (self, QHostAddress?groupAddress) ``` 通過加入指定的組播組_groupAddress_由操作系統選擇的缺省接口上。該插座必須是[BoundState](qabstractsocket.html#SocketState-enum),否則會發生錯誤。 如果成功該函數返回True,否則返回False ,并相應地設置套接字錯誤。 此功能被引入Qt的4.8 。 **See also** [leaveMulticastGroup](qudpsocket.html#leaveMulticastGroup)( ) 。 ``` bool QUdpSocket.joinMulticastGroup (self, QHostAddress?groupAddress, QNetworkInterface?iface) ``` 這是一個重載函數。 加入組播組的地址_groupAddress_接口上_iface_。 此功能被引入Qt的4.8 。 **See also** [leaveMulticastGroup](qudpsocket.html#leaveMulticastGroup)( ) 。 ``` bool QUdpSocket.leaveMulticastGroup (self, QHostAddress?groupAddress) ``` 葉由指定的組播組_groupAddress_由操作系統選擇的缺省接口上。該插座必須是[BoundState](qabstractsocket.html#SocketState-enum),否則會發生錯誤。 如果成功該函數返回True,否則返回False ,并相應地設置套接字錯誤。 此功能被引入Qt的4.8 。 **See also** [joinMulticastGroup](qudpsocket.html#joinMulticastGroup)( ) 。 ``` bool QUdpSocket.leaveMulticastGroup (self, QHostAddress?groupAddress, QNetworkInterface?iface) ``` 這是一個重載函數。 葉由指定的組播組_groupAddress_接口上_iface_。 此功能被引入Qt的4.8 。 **See also** [joinMulticastGroup](qudpsocket.html#joinMulticastGroup)( ) 。 ``` QNetworkInterface QUdpSocket.multicastInterface (self) ``` [](qnetworkinterface.html) [返回的出接口的組播數據報的接口。這相當于對IPv4套接字IP_MULTICAST_IF套接字選項和IPv6的套接字IPV6_MULTICAST_IF套接字選項。如果沒有接口已經被預先設定的,這個函數返回一個無效的](qnetworkinterface.html)[QNetworkInterface](qnetworkinterface.html)。該插座必須是[BoundState](qabstractsocket.html#SocketState-enum),否則無效[QNetworkInterface](qnetworkinterface.html)返回。 此功能被引入Qt的4.8 。 **See also** [setMulticastInterface](qudpsocket.html#setMulticastInterface)( ) 。 ``` int QUdpSocket.pendingDatagramSize (self) ``` 返回第一個懸而未決的UDP數據報的大小。如果沒有可用的數據報,這個函數返回-1 。 **See also** [hasPendingDatagrams](qudpsocket.html#hasPendingDatagrams)()和[readDatagram](qudpsocket.html#readDatagram)( ) 。 ``` (str, QHostAddress?host, int?port) QUdpSocket.readDatagram (self, int?maxlen) ``` 接收到的數據報不大于_maxSize_字節并將其存儲在_data_。發送者的主機地址和端口存儲在*_address_和*_port_(除非該指針是0)。 在成功時返回數據包的大小,否則返回-1 。 If _maxSize_過小,則數據報的剩馀部分將會丟失。為了避免數據丟失,請致電[pendingDatagramSize](qudpsocket.html#pendingDatagramSize)()嘗試讀出之前,以確定待處理數據報的大小。如果_maxSize_是0 ,則數據報將被丟棄。 **See also** [writeDatagram](qudpsocket.html#writeDatagram)( )[hasPendingDatagrams](qudpsocket.html#hasPendingDatagrams)()和[pendingDatagramSize](qudpsocket.html#pendingDatagramSize)( ) 。 ``` QUdpSocket.setMulticastInterface (self, QNetworkInterface?iface) ``` 設置出接口的組播數據報的接口_iface_。這相當于對IPv4套接字IP_MULTICAST_IF套接字選項和IPv6的套接字IPV6_MULTICAST_IF套接字選項。該插座必須是[BoundState](qabstractsocket.html#SocketState-enum),否則這個函數不執行任何操作。 此功能被引入Qt的4.8 。 **See also** [multicastInterface](qudpsocket.html#multicastInterface)( )[joinMulticastGroup](qudpsocket.html#joinMulticastGroup)()和[leaveMulticastGroup](qudpsocket.html#leaveMulticastGroup)( ) 。 ``` int QUdpSocket.writeDatagram (self, str?data, QHostAddress?host, int?port) ``` 發送數據報的_data_大小_size_到主機地址_address_在端口_port_。返回發送成功的字節數,否則返回-1 。 數據包總是寫成一個街區。一個數據報的最大尺寸是高度依賴于平臺的,但可以低至8192字節。如果數據報太大,此函數將返回-1,[error](qabstractsocket.html#error)( )將返回[DatagramTooLargeError](qabstractsocket.html#SocketError-enum)。 發送數據包大于512字節一般是disadvised ,因為即使他們發送成功,他們很可能由IP層到達其最終目的地之前是支離破碎。 **Warning:**在S60 5.0和更早的版本中, writeDatagram返回值是不可靠的大型數據包。 **Warning:**在連接的UDP套接字調用這個函數可能會導致發送錯誤,并且沒有數據包。如果您使用的是連接的socket ,使用[write](qiodevice.html#write)( )來發送數據報。 **See also** [readDatagram](qudpsocket.html#readDatagram)()和[write](qiodevice.html#write)( ) 。 ``` int QUdpSocket.writeDatagram (self, QByteArray?datagram, QHostAddress?host, int?port) ``` 這是一個重載函數。 發送的數據報_datagram_到主機地址_host_并在端口_port_。
                  <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>

                              哎呀哎呀视频在线观看