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は、Network Programming APIに含まれています。
パブリック関数
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 のように動作する。保留中の接続を接続されたQTcpSocket として受け入れるには、nextPendingConnection() を呼び出す。この関数は、クライアントとの通信に使用できる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 の場合、エンドポイント最大チャネル数が使用される。 を負にすると、TCP エミュレーション・モードが設定されます。count
QSctpServer が UnconnectedState のときのみ、このメソッドを呼び出す。
maximumChannelCount() およびQSctpSocketも参照のこと 。
© 2025 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.