Sophie

Sophie

distrib > Mageia > 7 > armv7hl > media > core-updates > by-pkgid > d5e62c01ae8d1e579463c6a871dd44bf > files > 2115

qtbase5-doc-5.12.6-2.mga7.noarch.rpm

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!-- qsctpsocket.cpp -->
  <title>QSctpSocket Class | Qt Network 5.12.6</title>
  <link rel="stylesheet" type="text/css" href="style/offline-simple.css" />
  <script type="text/javascript">
    document.getElementsByTagName("link").item(0).setAttribute("href", "style/offline.css");
    // loading style sheet breaks anchors that were jumped to before
    // so force jumping to anchor again
    setTimeout(function() {
        var anchor = location.hash;
        // need to jump to different anchor first (e.g. none)
        location.hash = "#";
        setTimeout(function() {
            location.hash = anchor;
        }, 0);
    }, 0);
  </script>
</head>
<body>
<div class="header" id="qtdocheader">
  <div class="main">
    <div class="main-rounded">
      <div class="navigationbar">
        <table><tr>
<td >Qt 5.12</td><td ><a href="qtnetwork-index.html">Qt Network</a></td><td ><a href="qtnetwork-module.html">C++ Classes</a></td><td >QSctpSocket</td></tr></table><table class="buildversion"><tr>
<td id="buildversion" width="100%" align="right"><a href="qtnetwork-index.html">Qt 5.12.6 Reference Documentation</a></td>
        </tr></table>
      </div>
    </div>
<div class="content">
<div class="line">
<div class="content mainContent">
<div class="sidebar">
<div class="toc">
<h3><a name="toc">Contents</a></h3>
<ul>
<li class="level1"><a href="#public-functions">Public Functions</a></li>
<li class="level1"><a href="#reimplemented-public-functions">Reimplemented Public Functions</a></li>
<li class="level1"><a href="#static-public-members">Static Public Members</a></li>
<li class="level1"><a href="#reimplemented-protected-functions">Reimplemented Protected Functions</a></li>
<li class="level1"><a href="#details">Detailed Description</a></li>
</ul>
</div>
<div class="sidebar-content" id="sidebar-content"></div></div>
<h1 class="title">QSctpSocket Class</h1>
<!-- $$$QSctpSocket-brief -->
<p>The <a href="qsctpsocket.html">QSctpSocket</a> class provides an SCTP socket. <a href="#details">More...</a></p>
<!-- @@@QSctpSocket -->
<div class="table"><table class="alignedsummary">
<tr><td class="memItemLeft rightAlign topAlign"> Header:</td><td class="memItemRight bottomAlign">   <span class="preprocessor">#include &lt;QSctpSocket&gt;</span>
</td></tr><tr><td class="memItemLeft rightAlign topAlign"> qmake:</td><td class="memItemRight bottomAlign"> QT += network</td></tr><tr><td class="memItemLeft rightAlign topAlign"> Since:</td><td class="memItemRight bottomAlign">  Qt 5.8</td></tr><tr><td class="memItemLeft rightAlign topAlign"> Inherits:</td><td class="memItemRight bottomAlign"> <a href="qtcpsocket.html">QTcpSocket</a></td></tr></table></div><ul>
<li><a href="qsctpsocket-members.html">List of all members, including inherited members</a></li>
<li><a href="qsctpsocket-obsolete.html">Obsolete members</a></li>
</ul>
<a name="public-functions"></a>
<h2 id="public-functions">Public Functions</h2>
<div class="table"><table class="alignedsummary">
<tr><td class="memItemLeft rightAlign topAlign"> </td><td class="memItemRight bottomAlign"><b><a href="qsctpsocket.html#QSctpSocket">QSctpSocket</a></b>(QObject *<i>parent</i> = nullptr)</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> virtual </td><td class="memItemRight bottomAlign"><b><a href="qsctpsocket.html#dtor.QSctpSocket">~QSctpSocket</a></b>()</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> bool </td><td class="memItemRight bottomAlign"><b><a href="qsctpsocket.html#isInDatagramMode">isInDatagramMode</a></b>() const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> int </td><td class="memItemRight bottomAlign"><b><a href="qsctpsocket.html#maximumChannelCount">maximumChannelCount</a></b>() const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> QNetworkDatagram </td><td class="memItemRight bottomAlign"><b><a href="qsctpsocket.html#readDatagram">readDatagram</a></b>()</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qsctpsocket.html#setMaximumChannelCount">setMaximumChannelCount</a></b>(int <i>count</i>)</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> bool </td><td class="memItemRight bottomAlign"><b><a href="qsctpsocket.html#writeDatagram">writeDatagram</a></b>(const QNetworkDatagram &amp;<i>datagram</i>)</td></tr>
</table></div>
<a name="reimplemented-public-functions"></a>
<h2 id="reimplemented-public-functions">Reimplemented Public Functions</h2>
<div class="table"><table class="alignedsummary">
<tr><td class="memItemLeft rightAlign topAlign"> virtual void </td><td class="memItemRight bottomAlign"><b><a href="qsctpsocket.html#close">close</a></b>() override</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> virtual void </td><td class="memItemRight bottomAlign"><b><a href="qsctpsocket.html#disconnectFromHost">disconnectFromHost</a></b>() override</td></tr>
</table></div>
<ul>
<li class="fn">37 public functions inherited from <a href="qabstractsocket.html#public-functions">QAbstractSocket</a></li>
<li class="fn">44 public functions inherited from <a href="../qtcore/qiodevice.html#public-functions">QIODevice</a></li>
<li class="fn">31 public functions inherited from <a href="../qtcore/qobject.html#public-functions">QObject</a></li>
</ul>
<a name="static-public-members"></a>
<h2 id="static-public-members">Static Public Members</h2>
<div class="table"><table class="alignedsummary">
<tr><td class="memItemLeft rightAlign topAlign"> const QMetaObject </td><td class="memItemRight bottomAlign"><b><a href="qsctpsocket.html#staticMetaObject-var">staticMetaObject</a></b></td></tr>
</table></div>
<ul>
<li class="fn">9 static public members inherited from <a href="../qtcore/qobject.html#static-public-members">QObject</a></li>
</ul>
<a name="reimplemented-protected-functions"></a>
<h2 id="reimplemented-protected-functions">Reimplemented Protected Functions</h2>
<div class="table"><table class="alignedsummary">
<tr><td class="memItemLeft rightAlign topAlign"> virtual qint64 </td><td class="memItemRight bottomAlign"><b><a href="qsctpsocket.html#readData">readData</a></b>(char *<i>data</i>, qint64 <i>maxSize</i>) override</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> virtual qint64 </td><td class="memItemRight bottomAlign"><b><a href="qsctpsocket.html#readLineData">readLineData</a></b>(char *<i>data</i>, qint64 <i>maxlen</i>) override</td></tr>
</table></div>
<ul>
<li class="fn">10 protected functions inherited from <a href="qabstractsocket.html#protected-functions">QAbstractSocket</a></li>
<li class="fn">5 protected functions inherited from <a href="../qtcore/qiodevice.html#protected-functions">QIODevice</a></li>
<li class="fn">9 protected functions inherited from <a href="../qtcore/qobject.html#protected-functions">QObject</a></li>
</ul>
<h3>Additional Inherited Members</h3>
<ul>
<li class="fn">1 property inherited from <a href="../qtcore/qobject.html#properties">QObject</a></li>
<li class="fn">1 public slot inherited from <a href="../qtcore/qobject.html#public-slots">QObject</a></li>
<li class="fn">6 signals inherited from <a href="qabstractsocket.html#signals">QAbstractSocket</a></li>
<li class="fn">6 signals inherited from <a href="../qtcore/qiodevice.html#signals">QIODevice</a></li>
<li class="fn">2 signals inherited from <a href="../qtcore/qobject.html#signals">QObject</a></li>
<li class="fn">10 protected functions inherited from <a href="qabstractsocket.html#protected-functions">QAbstractSocket</a></li>
<li class="fn">5 protected functions inherited from <a href="../qtcore/qiodevice.html#protected-functions">QIODevice</a></li>
<li class="fn">9 protected functions inherited from <a href="../qtcore/qobject.html#protected-functions">QObject</a></li>
</ul>
<a name="details"></a>
<!-- $$$QSctpSocket-description -->
<div class="descr">
<h2 id="details">Detailed Description</h2>
<p>The <a href="qsctpsocket.html">QSctpSocket</a> class provides an SCTP socket.</p>
<p>SCTP (Stream Control Transmission Protocol) is a transport layer protocol serving in a similar role as the popular protocols TCP and UDP. Like UDP, SCTP is message-oriented, but it ensures reliable, in-sequence transport of messages with congestion control like TCP.</p>
<p>SCTP is connection-oriented protocol, which provides the complete simultaneous transmission of multiple data streams between endpoints. This multi-streaming allows data to be delivered by independent channels, so that if there is data loss in one stream, delivery will not be affected for the other streams.</p>
<p>Being message-oriented, SCTP transports a sequence of messages, rather than transporting an unbroken stream of bytes as does TCP. Like in UDP, in SCTP a sender sends a message in one operation, and that exact message is passed to the receiving application process in one operation. But unlike UDP, the delivery is guaranteed.</p>
<p>It also supports multi-homing, meaning that a connected endpoint can have alternate IP addresses associated with it in order to route around network failure or changing conditions.</p>
<p><a href="qsctpsocket.html">QSctpSocket</a> is a convenience subclass of <a href="qtcpsocket.html">QTcpSocket</a> that allows you to emulate TCP data stream over SCTP or establish an SCTP connection for reliable datagram service.</p>
<p><a href="qsctpsocket.html">QSctpSocket</a> can operate in one of two possible modes:</p>
<ul>
<li>Continuous byte stream (TCP emulation).</li>
<li>Multi-streamed datagram mode.</li>
</ul>
<p>To set a continuous byte stream mode, instantiate <a href="qsctpsocket.html">QSctpSocket</a> and call <a href="qsctpsocket.html#setMaximumChannelCount">setMaximumChannelCount</a>() with a negative value. This gives the ability to use <a href="qsctpsocket.html">QSctpSocket</a> as a regular buffered <a href="qtcpsocket.html">QTcpSocket</a>. You can call <a href="qabstractsocket.html#connectToHost">connectToHost</a>() to initiate connection with endpoint, <a href="../qtcore/qiodevice.html#write-2">write</a>() to transmit and <a href="../qtcore/qiodevice.html#read-1">read</a>() to receive data from the peer, but you cannot distinguish message boundaries.</p>
<p>By default, <a href="qsctpsocket.html">QSctpSocket</a> operates in datagram mode. Before connecting, call <a href="qsctpsocket.html#setMaximumChannelCount">setMaximumChannelCount</a>() to set the maximum number of channels that the application is prepared to support. This number is a parameter negotiated with the remote endpoint and its value can be bounded by the operating system. The default value of 0 indicates to use the peer's value. If both endpoints have default values, then number of connection channels is system-dependent. After establishing a connection, you can fetch the actual number of channels by calling <a href="../qtcore/qiodevice.html#readChannelCount">readChannelCount</a>() and <a href="../qtcore/qiodevice.html#writeChannelCount">writeChannelCount</a>().</p>
<pre class="cpp">

  <span class="type"><a href="qsctpsocket.html#QSctpSocket">QSctpSocket</a></span> <span class="operator">*</span>socket <span class="operator">=</span> <span class="keyword">new</span> <span class="type"><a href="qsctpsocket.html#QSctpSocket">QSctpSocket</a></span>(<span class="keyword">this</span>);

  socket<span class="operator">-</span><span class="operator">&gt;</span>setMaxChannelCount(<span class="number">16</span>);
  socket<span class="operator">-</span><span class="operator">&gt;</span>connectToHost(<span class="type"><a href="qhostaddress.html">QHostAddress</a></span><span class="operator">::</span>LocalHost<span class="operator">,</span> <span class="number">1973</span>);

  <span class="keyword">if</span> (socket<span class="operator">-</span><span class="operator">&gt;</span>waitForConnected(<span class="number">1000</span>)) {
      <span class="type">int</span> inputChannels <span class="operator">=</span> socket<span class="operator">-</span><span class="operator">&gt;</span>readChannelCount();
      <span class="type">int</span> outputChannels <span class="operator">=</span> socket<span class="operator">-</span><span class="operator">&gt;</span>writeChannelCount();

      <span class="operator">.</span><span class="operator">.</span><span class="operator">.</span><span class="operator">.</span>
  }

</pre>
<p>In datagram mode, <a href="qsctpsocket.html">QSctpSocket</a> performs the buffering of datagrams independently for each channel. You can queue a datagram to the buffer of the current channel by calling <a href="qsctpsocket.html#writeDatagram">writeDatagram</a>() and read a pending datagram by calling <a href="qsctpsocket.html#readDatagram">readDatagram</a>() respectively.</p>
<p>Using the standard <a href="../qtcore/qiodevice.html">QIODevice</a> functions <a href="../qtcore/qiodevice.html#read-1">read</a>(), <a href="../qtcore/qiodevice.html#readLine-1">readLine</a>(), <a href="../qtcore/qiodevice.html#write-2">write</a>(), etc. is allowed in datagram mode with the same limitations as in continuous byte stream mode.</p>
<p><b>Note: </b>This feature is not supported on the Windows platform.</p></div>
<p><b>See also </b><a href="qsctpserver.html">QSctpServer</a>, <a href="qtcpsocket.html">QTcpSocket</a>, and <a href="qabstractsocket.html">QAbstractSocket</a>.</p>
<!-- @@@QSctpSocket -->
<div class="func">
<h2>Member Function Documentation</h2>
<!-- $$$QSctpSocket[overload1]$$$QSctpSocketQObject* -->
<h3 class="fn" id="QSctpSocket"><a name="QSctpSocket"></a>QSctpSocket::<span class="name">QSctpSocket</span>(<span class="type"><a href="../qtcore/qobject.html#QObject">QObject</a></span> *<i>parent</i> = nullptr)</h3>
<p>Creates a <a href="qsctpsocket.html">QSctpSocket</a> object in state <code>UnconnectedState</code>.</p>
<p>Sets the datagram operation mode. The <i>parent</i> argument is passed to <a href="../qtcore/qobject.html">QObject</a>'s constructor.</p>
<p><b>See also </b><a href="qabstractsocket.html#socketType">socketType</a>() and <a href="qsctpsocket.html#setMaximumChannelCount">setMaximumChannelCount</a>().</p>
<!-- @@@QSctpSocket -->
<!-- $$$~QSctpSocket[overload1]$$$~QSctpSocket -->
<h3 class="fn" id="dtor.QSctpSocket"><a name="dtor.QSctpSocket"></a><code>[virtual] </code>QSctpSocket::<span class="name">~QSctpSocket</span>()</h3>
<p>Destroys the socket, closing the connection if necessary.</p>
<p><b>See also </b><a href="qsctpsocket.html#close">close</a>().</p>
<!-- @@@~QSctpSocket -->
<!-- $$$close[overload1]$$$close -->
<h3 class="fn" id="close"><a name="close"></a><code>[override virtual] </code><span class="type">void</span> QSctpSocket::<span class="name">close</span>()</h3>
<p>Reimplemented from <a href="qabstractsocket.html#close">QAbstractSocket::close</a>().</p>
<!-- @@@close -->
<!-- $$$disconnectFromHost[overload1]$$$disconnectFromHost -->
<h3 class="fn" id="disconnectFromHost"><a name="disconnectFromHost"></a><code>[override virtual] </code><span class="type">void</span> QSctpSocket::<span class="name">disconnectFromHost</span>()</h3>
<p>Reimplemented from <a href="qabstractsocket.html#disconnectFromHost">QAbstractSocket::disconnectFromHost</a>().</p>
<!-- @@@disconnectFromHost -->
<!-- $$$isInDatagramMode[overload1]$$$isInDatagramMode -->
<h3 class="fn" id="isInDatagramMode"><a name="isInDatagramMode"></a><span class="type">bool</span> QSctpSocket::<span class="name">isInDatagramMode</span>() const</h3>
<p>Returns <code>true</code> if the socket is running in datagram mode.</p>
<p><b>See also </b><a href="qsctpsocket.html#setMaximumChannelCount">setMaximumChannelCount</a>().</p>
<!-- @@@isInDatagramMode -->
<!-- $$$maximumChannelCount[overload1]$$$maximumChannelCount -->
<h3 class="fn" id="maximumChannelCount"><a name="maximumChannelCount"></a><span class="type">int</span> QSctpSocket::<span class="name">maximumChannelCount</span>() const</h3>
<p>Returns the maximum number of channels that <a href="qsctpsocket.html">QSctpSocket</a> is able to support.</p>
<p>A value of 0 (the default) means that the number of connection channels would be set by the remote endpoint.</p>
<p>Returns -1 if <a href="qsctpsocket.html">QSctpSocket</a> is running in continuous byte stream mode.</p>
<p><b>See also </b><a href="qsctpsocket.html#setMaximumChannelCount">setMaximumChannelCount</a>(), <a href="../qtcore/qiodevice.html#readChannelCount">readChannelCount</a>(), and <a href="../qtcore/qiodevice.html#writeChannelCount">writeChannelCount</a>().</p>
<!-- @@@maximumChannelCount -->
<!-- $$$readData[overload1]$$$readDatachar*qint64 -->
<h3 class="fn" id="readData"><a name="readData"></a><code>[override virtual protected] </code><span class="type"><a href="../qtcore/qtglobal.html#qint64-typedef">qint64</a></span> QSctpSocket::<span class="name">readData</span>(<span class="type">char</span> *<i>data</i>, <span class="type"><a href="../qtcore/qtglobal.html#qint64-typedef">qint64</a></span> <i>maxSize</i>)</h3>
<p>Reimplemented from <a href="qabstractsocket.html#readData">QAbstractSocket::readData</a>().</p>
<!-- @@@readData -->
<!-- $$$readDatagram[overload1]$$$readDatagram -->
<h3 class="fn" id="readDatagram"><a name="readDatagram"></a><span class="type"><a href="qnetworkdatagram.html">QNetworkDatagram</a></span> QSctpSocket::<span class="name">readDatagram</span>()</h3>
<p>Reads a datagram from the buffer of the current read channel, and returns it as a <a href="qnetworkdatagram.html">QNetworkDatagram</a> object, along with the sender's host address and port. If possible, this function will also try to determine the datagram's destination address, port, and the number of hop counts at reception time.</p>
<p>On failure, returns a <a href="qnetworkdatagram.html">QNetworkDatagram</a> that reports <a href="qnetworkdatagram.html#isValid">not valid</a>.</p>
<p><b>See also </b><a href="qsctpsocket.html#writeDatagram">writeDatagram</a>(), <a href="qsctpsocket.html#isInDatagramMode">isInDatagramMode</a>(), and <a href="../qtcore/qiodevice.html#currentReadChannel">currentReadChannel</a>().</p>
<!-- @@@readDatagram -->
<!-- $$$readLineData[overload1]$$$readLineDatachar*qint64 -->
<h3 class="fn" id="readLineData"><a name="readLineData"></a><code>[override virtual protected] </code><span class="type"><a href="../qtcore/qtglobal.html#qint64-typedef">qint64</a></span> QSctpSocket::<span class="name">readLineData</span>(<span class="type">char</span> *<i>data</i>, <span class="type"><a href="../qtcore/qtglobal.html#qint64-typedef">qint64</a></span> <i>maxlen</i>)</h3>
<p>Reimplemented from <a href="qabstractsocket.html#readLineData">QAbstractSocket::readLineData</a>().</p>
<!-- @@@readLineData -->
<!-- $$$setMaximumChannelCount[overload1]$$$setMaximumChannelCountint -->
<h3 class="fn" id="setMaximumChannelCount"><a name="setMaximumChannelCount"></a><span class="type">void</span> QSctpSocket::<span class="name">setMaximumChannelCount</span>(<span class="type">int</span> <i>count</i>)</h3>
<p>Sets the maximum number of channels that the application is prepared to support in datagram mode, to <i>count</i>. If <i>count</i> is 0, endpoint's value for maximum number of channels is used. Negative <i>count</i> sets a continuous byte stream mode.</p>
<p>Call this method only when <a href="qsctpsocket.html">QSctpSocket</a> is in <a href="qabstractsocket.html#SocketState-enum">UnconnectedState</a>.</p>
<p><b>See also </b><a href="qsctpsocket.html#maximumChannelCount">maximumChannelCount</a>(), <a href="../qtcore/qiodevice.html#readChannelCount">readChannelCount</a>(), and <a href="../qtcore/qiodevice.html#writeChannelCount">writeChannelCount</a>().</p>
<!-- @@@setMaximumChannelCount -->
<!-- $$$writeDatagram[overload1]$$$writeDatagramconstQNetworkDatagram& -->
<h3 class="fn" id="writeDatagram"><a name="writeDatagram"></a><span class="type">bool</span> QSctpSocket::<span class="name">writeDatagram</span>(const <span class="type"><a href="qnetworkdatagram.html">QNetworkDatagram</a></span> &amp;<i>datagram</i>)</h3>
<p>Writes a <i>datagram</i> to the buffer of the current write channel. Returns true on success; otherwise returns false.</p>
<p><b>See also </b><a href="qsctpsocket.html#readDatagram">readDatagram</a>(), <a href="qsctpsocket.html#isInDatagramMode">isInDatagramMode</a>(), and <a href="../qtcore/qiodevice.html#currentWriteChannel">currentWriteChannel</a>().</p>
<!-- @@@writeDatagram -->
</div>
        </div>
       </div>
   </div>
   </div>
</div>
<div class="footer">
   <p>
   <acronym title="Copyright">&copy;</acronym> 2019 The Qt Company Ltd.
   Documentation contributions included herein are the copyrights of
   their respective owners.<br/>    The documentation provided herein is licensed under the terms of the    <a href="http://www.gnu.org/licenses/fdl.html">GNU Free Documentation    License version 1.3</a> as published by the Free Software Foundation.<br/>    Qt and respective logos are trademarks of The Qt Company Ltd.     in Finland and/or other countries worldwide. All other trademarks are property
   of their respective owners. </p>
</div>
</body>
</html>