QSctpServer Class
QSctpServer クラスは SCTP ベースのサーバーを提供する。詳細...
Header: | #include <QSctpServer> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
qmake: | QT += network |
Inherits: | 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も参照してください 。
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。