このページでは

QSctpServer Class

QSctpServer クラスは、SCTP ベースのサーバーを提供します。詳細...

ヘッダー: #include <QSctpServer>
CMake: find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake: QT += network
継承元: QTcpServer

パブリック関数

QSctpServer(QObject *parent = nullptr)
virtual ~QSctpServer()
int maximumChannelCount() const
QSctpSocket *nextPendingDatagramConnection()
void setMaximumChannelCount(int count)

再実装された保護関数

virtual void incomingConnection(qintptr socketDescriptor) override

詳細な説明

SCTP (Stream Control Transmission Protocol) は、広く普及している TCP や UDP と同様の役割を果たすトランスポート層プロトコルです。UDP と同様に、SCTP もメッセージ指向ですが、TCP と同様に輻輳制御を行い、メッセージの信頼性の高い順序通りの転送を保証します。プロトコルの詳細については、QSctpSocket のドキュメントを参照してください。

QSctpServer は、QTcpServer の便利なサブクラスであり、TCP エミュレーションまたはデータグラムモードのいずれかで、着信する SCTP ソケット接続を受け入れることができます。

QSctpServer を使用する最も一般的な方法は、オブジェクトを生成し、setMaximumChannelCount() を呼び出して、サーバーがサポートするチャネルの最大数を設定することです。この呼び出しで負の引数を渡すことで、TCP エミュレーションモードを設定できます。 また、特別な値である 0(デフォルト)を指定すると、相手側の値を実際のチャネル数として使用することを示します。新しい着信接続は、この数をサーバーのソケット記述子から継承し、リモートエンドポイントの設定に応じて調整します。

TCPエミュレーションモードでは、受け入れられたクライアントはデータ送信に単一の連続したバイトストリームを使用し、QSctpServerは単なるQTcpServer のように動作します。nextPendingConnection()を呼び出して、保留中の接続を接続済みのQTcpSocket として受け入れます。この関数は、クライアントとの通信に使用できるQAbstractSocket::ConnectedState 内のQTcpSocket へのポインタを返します。このモードでは、SCTPプロトコルの基本的な機能にしかアクセスできません。 ソケットは、システムレベルで IP 経由で SCTP パケットを送信し、QTcpSocket インターフェースを介してアプリケーションとやり取りを行います。

対照的に、データグラムモードはメッセージ指向であり、エンドポイント間で複数のデータストリームを完全に同時送信します。nextPendingDatagramConnection() を呼び出すと、保留中のデータグラムモード接続を接続済みのQSctpSocket として受け入れることができます。

注:このクラスは Windows プラットフォームではサポートされていません。

関連項目: QTcpServer 、QSctpSocket 、およびQAbstractSocket 。

メンバ関数のドキュメント

[explicit] QSctpServer::QSctpServer(QObject *parent = nullptr)

QSctpServer オブジェクトを生成します。

データグラム動作モードを設定します。parent 引数は、QObject のコンストラクタに渡されます。

setMaximumChannelCount()、listen()、およびsetSocketDescriptor()も参照してください 。

[virtual noexcept] QSctpServer::~QSctpServer()

QSctpServer オブジェクトを破棄します。サーバーが接続を待機している場合、ソケットは自動的に閉じられます。

close()も参照してください 。

[override virtual protected] void QSctpServer::incomingConnection(qintptr socketDescriptor)

QTcpServer::incomingConnection (qintptr socketDescriptor)を再実装しています。

int QSctpServer::maximumChannelCount() const

受け入れられたソケットがサポート可能な最大チャネル数を返します。

値が 0(デフォルト)の場合、接続チャネルの数はリモートエンドポイントによって設定されます。

QSctpServer がTCPエミュレーションモードで実行されている場合、-1を返します。

setMaximumChannelCount()も参照してください 。

QSctpSocket *QSctpServer::nextPendingDatagramConnection()

次に処理待ちとなっているデータグラムモードの接続を、接続済みのQSctpSocket オブジェクトとして返します。

データグラムモードの接続は、メッセージ指向のマルチストリーム通信を提供します。

ソケットはサーバーの子として作成されるため、QSctpServer オブジェクトが破棄されると自動的に削除されます。ただし、メモリの無駄遣いを防ぐため、使用が終了したらオブジェクトを明示的に削除することをお勧めします。

保留中のデータグラムモードの接続がない場合、この関数は null を返します。

注: 返されるQSctpSocket オブジェクトは 、別のスレッドからは使用できません。別のスレッドから着信接続を使用したい場合は、incomingConnection() をオーバーライドする必要があります。

関連項目: hasPendingConnections(),nextPendingConnection(), およびQSctpSocket 。

void QSctpServer::setMaximumChannelCount(int count)

データグラムモードでサーバーがサポート可能なチャネルの最大数を、count に設定します。count が0の場合、エンドポイントのチャネル最大数が使用されます。count に負の値を指定すると、TCPエミュレーションモードが設定されます。

このメソッドは、QSctpServer がUnconnectedStateにある場合にのみ呼び出してください。

maximumChannelCount() およびQSctpSocketも参照してください 。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. 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.