[ 前のページ ] [ 次のページ ] [ 目次 ] [ DOC Home ]
TELNETポート・ドライバ(TNDRIVER)は,RAW,NVT,RLOGINおよびTELNETプロトコルを使用して,TCP/IP ストリーム接続のためのターミナル・セッション・ サポートを提供します。接続のリモート側には,リモート・デバイスとアプリケーションのどちらが存在していてもかまいません。
ユーザ・プログラムは,IO$_TTY_PORTおよびIO$_TTY_PORT_BUFIO機能コードを使用して, 標準のOpenVMS $QIOシステム・サービスを通してTELNET接続を管理することができます。 本章ではこれらの機能コードとその引数について説明します。
インタフェースは以下の定義を使用しています。シンボルはSYS$LIBRARY:TNIODEF.H に定義されています。
以下の表は,このインタフェースで使用される各種のリテラルを示しています。
項目コード | 最大サイズ | 説明 |
---|---|---|
TN$_ACCPORNAM | 64 | アクセス・ポート名文字列。書き込みの際, 文字列の長さはitem_lengthフィールドによって決定されます。item_length は63バイト以下でなければなりません。読み込みの際, 文字列は.ASCIZ形式(最初のバイトに文字列の長さが格納されている) で返されるので,64バイトのサイズが適しています。 |
TN$_CHARACTERISTICS | 4 | 特性マスク。このロングワードは,読み込みまたは書き込みを行うデバイスの特性のビットマスクを含んでいます。 表 4-2を参照。 |
TN$_CONNECTION_ATTEMPTS | 4 | (再)接続の試み。この項目は,再接続可能なデバイスに対して試みて失敗した再接続の回数です。 接続に成功すると, この値は初期化されます。この項目は読み込み専用です。 |
TN$_CONNECTION_INTERVAL | 4 | (再)接続の試みが行われるまでの時間の最小値( 秒単位)。 |
TN$_CONNECTION_ TIMEOUT | 4 | 最後の(再)接続の試みからの経過時間( 秒単位)。この項目は読み込み専用です。 |
TN$_DATA_HIGH | 4 | ネットワーク・ ポートでバッファに格納される出力データの最大量(バイト単位) 。この値は,ソケット内でバッファに格納されるデータの量には影響を与えません。 |
TN$_DEVICE_ UNIT | 4 | ターミナル・デバイス・ ユニット番号。書き込みの際,この値は1〜9999の範囲でなければなりません。 |
TN$_IDLE_INTERVAL | 4 | 接続の切断が行われるまでのアイドル時間の最大値( 秒単位)。デバイスがストールしている場合,接続は切断されません。 |
TN$_IDLE_TIMEOUT | 4 | 最後にターミナルに対して出力が行われてからの経過時間( 秒単位)。この項目は読み込み専用です。 |
TN$_LOCAL_ADDRESS | 32 | アクティブな接続のローカルなsockaddr 。書き込みの際には,item_length
がsockaddr のサイズを決定します。
sockaddr は,sockaddrサイズ・フィールドを含んでいるBSD 4.4
形式であることに注意してください(Cプログラムは_
SOCKADDR_LENシンボルを定義してコンパイルする必要があります)。この項目は読み込み専用です。
|
TN$_NETWORK_ DEVICE_NAME | 64 | 現在ターミナルにバインドされているネットワーク・ デバイスの名前。読み込みの際, 文字列は.ASCIZ形式(最初のバイトに文字列の長さが格納されている) で返されます。この項目は読み込み専用です。 |
TN$_PROTOCOL | 4 | セッション・ プロトコル。表 4-3を参照。 |
TN$_REMOTE_ADDRESS | 32 | アクティブな接続のリモート・ピアのsockaddr 。sockaddrは,sockaddrサイズ・フィールドを含んでいるBSD 4.4 形式であることに注意してください。sockaddrのサイズは, このフィールドをもとに決定されます。この項目は読み込み専用です。 |
TN$_SERVICE_TYPE | 4 | ターミナル・サービスのクラス。表 4-4 を参照。 |
TN$_STATUS | 4 | 現在のデバイスおよびセッション・ ステータス。この項目は読み込み専用です。 |
特性 | 説明 |
---|---|
TN$M_ AUTOCONNECT | 自動接続タイプ・デバイス。 |
TN$M_LOGIN_ON_DASSGN | TELNETデバイスが割り当て解除されたときにログインを開始します。 この特性では, BYPASSまたはSYSNAM特権が必要です。 |
TN$M_ PERMANENT_UCB | TELNETデバイスは明示的に削除されるまで存在し続けます。 |
TN$M_RETAIN_ON_ DASSGN | TELNETデバイスは,このデバイスに対する最後のチャネルの割り当て解除の際にも削除されません。 この条件は,最後の割り当て解除の際にクリアされ, その後に割り当てと割り当て解除が行われるとデバイスが削除されます。 |
プロトコル・タイプ | 説明 |
---|---|
TN$K_PROTOCOL_UNDEFINED | このセッションには明示的なプロトコルがありません。 データは解釈なしにソケット上で送受信されます。 これはraw接続です。 |
TN$K_PROTOCOL_NVT | Network-Virtual-Terminalプロトコル。 このプロトコルは基本的なセッション制御は理解しますが, TELNETプロトコルに存在するオプション・ネゴシエーションは含んでいません。 |
TN$K_PROTOCOL_RLOGIN | BSD Remote Loginプロトコル。この単純なプロトコルは,ある程度の特殊制御文字サポートを提供しますが,NVT およびTELNETプロトコルのアーキテクチャからの独立性はありません。 |
TN$K_PROTOCOL_TELNET | TELNETプロトコル。TELNET は,基本的なNVTプロトコルに加え,オプション・ネゴシエーションをサポートします。 これにより,参加しているクライアントとサーバの種類に応じてターミナル・ セッションを拡張することができます。 |
サービス・タイプ | 説明 |
---|---|
TN$K_SERVICE_NONE | サービス・タイプは現時点では不明です。 |
TN$K_SERVICE_ INCOMING | サービスは着信接続です。 |
TN$K_SERVICE_OUTGOING | サービスは発信接続です。 |
IO$_TTY_PORT機能は,ターミナル・ドライバを通してTELNETポート・ドライバに$QIO パラメータを渡すために使用されます。実際のサブ機能はオプション・ マスクとしてコード化され,以下の選択肢があります。
ソケットをTELNETターミナルにバインドします。
このサブ機能は,作成された(接続済みの)ソケットをTELNETターミナル・ デバイスにバインドします。
VMS用法: channel_number データ型: word (unsigned) アクセス: 読み込み専用 受け渡し方:値による
VMS用法: protocol_number データ型: longword (unsigned) アクセス: 読み込み専用 受け渡し方:値による
VMS用法: characteristics_mask データ型: longword (mask) アクセス: 読み込み専用 受け渡し方:値による
このサブ機能が完了すると,アプリケーションはその接続上ですべてのターミナルQIO 機能を実行することができます。ソケットがターミナル・ デバイスにバインドされている場合には,IO$_READxBLK機能もIO$_ WRITExBLK機能も処理せず,エラーSS$_DEVINUSEを返します。
SS$_IVCHAN | プログラミング・エラー。 指定されたchannel_numberは有効ではありません。 |
SS$_IVMODE | プログラミング・エラー。channel_number のアクセス・モードには,ターミナルのチャネルのアクセス・ モードよりも高い特権が与えられています。 |
SS$_NOPRIV | プログラミング・エラー。 BYPASSまたはSYSPRV特権がないのに,USERまたはSUPERVISORモードのQIO で,characteristics_maskにTN$M_LOGIN_ON_DASSGN特性が指定されていました。 |
SS$_NOTNETDEV | プログラミング・エラー。指定されたchannel_numberは非BGデバイスに割り当てられています。 |
SS$_ PROTOCOL | プログラミング・エラー。指定されたprotocol_number が有効でないか,またはインターネット・ネットワークが使用できません。 |
ソケットをTELNETターミナルからバインド解除します。
このサブ機能は,それまでバインドされていたソケット・ターミナル接続をバインド解除します。
VMS用法: channel_number データ型: word (unsigned) アクセス: 読み込み専用 受け渡し方:値による
完了時に,アプリケーションは接続とTELNETターミナルへの割り当てを保持していますが, 両者の間の関連付けはなくなります。そのソケット・チャネルに対するIO$_READxBLK またはIO$_WRITExBLK機能を実行しても,エラーSS$_DEVINUSE は返されません。
SS$_IVCHAN | プログラミング・エラー。 指定されたchannel_numberは有効ではありません。 |
SS$_IVMODE | プログラミング・エラー。 channel_numberのアクセス・モードには,ターミナルのチャネルのアクセス・ モードよりも高い特権が与えられています。 |
SS$_NOTNETDEV | プログラミング・エラー。指定されたchannel_number は非BGデバイスに割り当てられています。 |
SS$_DEVREQERR | プログラミング・エラー。channel_number 上のデバイスは,ソケット・ターミナル接続のデバイスにマッチしません。 |
IO$_TTY_PORT_BUFIO機能は,ターミナル・ドライバを通してTELNETポート・ ドライバに$QIOパラメータを渡すために使用されます。IO$_TTY_ PORT_BUFIOは,一部のサブ機能がターミナル・デバイスへのパラメータの読み書きのために, バッファ処理された項目リストを受け付けるという点で,IO$_TTY_PORT と異なっています。
IO$_TTY_PORT_BUFIOのサブ機能は,入出力のための項目リストを受け付けます。 この項目リストは次の形式です。
31 16 15 0 +------+------+------+------+ | item_code | item_length | \ +------+------+------+------+ > Item 1 | item_address | / +------+------+------+------+ / / \ / / > Item(s) 2..n / / / +------+------+------+------+ | 0 | 0 | End of list +------+------+------+------+
項目リストは,ゼロのitem_codeとitem_lengthで終わります。
IO$_TTY_PORT_BUFIOのサブ機能は1つのQIOにまとめることができます。たとえば,IO$M_TN_SETMODE とIO$M_TN_CONNECTを組み合わせることで,デバイスのパラメータを設定した後に, 接続の作成を試みることができます。
サブ機能は次の順序で実行されます。
デバイス・パラメータを読み込みます。
VMS用法: item_list データ型: 読み込み専用 アクセス: 参照による 受け渡し方:
SS$_BADATTRIB | プログラミング・エラー。 リスト内の項目コードは無効です。これの原因としては,そのコード, 読み込み専用パラメータを書き込もうとした,またはサイズが不適切であるなどが考えられます。 項目のバッファのアドレスは,I/Oステータス・ ブロックの第2のロングワードに返されます。 |
SS$_IVBUFLEN | プログラミング・エラー。指定された項目の長さは許容されません。 項目のバッファのアドレスは,I/O ステータス・ブロックの第2のロングワードに返されます。 |
SS$_NOPRIV | プログラミング・エラー。 要求側が持っていない特権を必要とする項目が項目リスト内に存在します。 項目のバッファのアドレスは,I/Oステータス・ブロックの第2のロングワードに返されます。 |
デバイス・パラメータを書き込みます。
VMS用法: item_list データ型: 読み込み専用 アクセス: 参照による 受け渡し方:
SS$_BADATTRIB | プログラミング・エラー。 リスト内の項目コードは無効です。これの原因としては,コード自体の問題, 読み込み専用パラメータを書き込もうとした,またはサイズが不適切であるなどが考えられます。 項目のバッファのアドレスは,I/O ステータス・ブロックの第2のロングワードに返されます。 |
SS$_DUPLNAM | プログラミング・エラー。 デバイスのユニット番号をTN$_DEVICE_UNIT項目を通して設定しようとする試みが, 指定されたユニット番号がすでに存在していたために失敗しました。 |
SS$_IVBUFLEN | プログラミング・ エラー。指定された項目の長さは許容されません。項目のバッファのアドレスは,I/O ステータス・ブロックの第2のロングワードに返されます。 |
SS$_NOPRIV | プログラミング・エラー。要求側が持っていない特権を必要とする項目が項目リスト内に存在します。 項目のバッファのアドレスは,I/Oステータス・ ブロックの第2のロングワードに返されます。 |