home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 1997 March / VPR9703B.ISO / driver / novell / nwpatch / server / nw312j / core.os / tcp188j.exe / SDK.TXT < prev    next >
Text File  |  1995-05-25  |  5KB  |  145 lines

  1. SDK.TXT
  2. 20SEP94
  3.  
  4. このファイルは、NLM開発者のみを対象としています。ユーザ情報は含まれ
  5. ていません。
  6.  
  7. TCPIP.NLMのバージョンMには、BSDソケットAPIおよびTLI APIに新しいオプション
  8. が追加されています(バージョンMは、TCP188Jに含まれています)。
  9.  
  10. BSDソケットAPIでのKeepAliveオプション
  11. -------------------------------------
  12. BSDソケットアプリケーションプログラミングインタフェースを使用する
  13. アプリケーションは、TCP KeepAliveタイマの使用をトグルでき、setsockopt
  14. 関数を使ってタイマの値を設定できます。
  15.  
  16. デフォルトでは、TCPIP.NLMは、BSDソケットAPIを使用する接続上にKeepAlive
  17. を送信しません。
  18.  
  19. setsockopt
  20.    setsockopt関数は、ソケット操作のパラメータを設定します。
  21.  
  22. 構文
  23.    #include <sys/types.h>
  24.    #include <sys/socket.h>
  25.  
  26.    setsockopt( int s, int level, int optname, char *optval, int optlen);
  27.  
  28.      s       (Input) パラメータが設定されるソケットのソケットファイルハンド
  29.                      ルを識別します。
  30.  
  31.      level   (Input) SOL_SOCKET
  32.  
  33.      optname (Input) SO_KEEPALIVE
  34.  
  35.      optval  (Input) オプションの値を示します。SO_KEEPALIVEオプションの
  36.                      値は整数で、タイムアウト値を分で示します。値がゼロの
  37.                      場合は、KeepAliveタイマは実行できません。値が1から4
  38.                      までの場合は、タイムアウトの値は2時間に設定されます。
  39.                    以前は、この値はKeepAliveのトグルをオン(value != 0)
  40.                      またはオフ(optval == 0)にするためだけに使われました。
  41.  
  42. TLI APIでのKeepAliveオプション
  43. ------------------------------
  44. TLIアプリケーションプログラミングインタフェースを使用するアプリケーション
  45. は、TCP KeepAliveタイマの使用をトグルでき、t_optmgmt関数を使ってタイマ
  46. の値を設定できます。
  47.  
  48. デフォルトでは、TCPIP.NLMは、TLI APIを使用する接続上にKeepAlivesを2時間
  49. おきに送信します。以前のバージョンでは、TCP for NetWareは、t_optmgmt関数を
  50. サポートしていませんでした。
  51.  
  52. 構文
  53.    #include <tiuser.h>
  54.    int t_optmgmt ( int fh, struct t_optmgmt *req, struct t_optmgmt *ret )
  55.  
  56.        fh   (Input)  バウンドトランスポートエンドポイントを識別します。
  57.  
  58.        req  (Input)  プロトコルオプションを含む構造を示します。
  59.  
  60.        ret  (Output) オプションとフラグの値を受信します。
  61.  
  62. 注意
  63. reqおよびret引き数が示すt_optmgmt構造には、次のメンバが含まれます:
  64.  
  65.    struct netbuf opt;
  66.    long flags;
  67.  
  68. optフィールドはプロトコルオプションを識別し、flagsフィールドはこれらのオプ
  69. ションによる動作を指定します。
  70.  
  71. KeepAliveタイマを変更するためには、T_NEGOTIATEフラグを設定してください。
  72. T_CHECKおよびT_DEFAULTフラグはサポートされていません。
  73.  
  74.   netbuf構造には、次のメンバが含まれます。:
  75.       unsigned int maxlen;
  76.       unsigned int len;
  77.       char *buf;
  78.  
  79.       maxlen   (Input)  reqの引き数に対しては意味をもちません。
  80.  
  81.                (Output) オプションバッファの最大サイズを指定します。
  82.  
  83.       len      (Input)  オプションのバイト数を指定します。
  84.  
  85.                (Output) 返されたバイト数を指定します。
  86.  
  87.       buf      (Input)  オプションバッファを示します。下に定義された
  88.                         t_opthdrを参照してください。
  89.  
  90.                (Output) オプションが配置されるバッファを示します。
  91.  
  92.                詳しくは次に定義するt_opthdrを参照してください。
  93.  
  94.  
  95. 次の構造は、アプリケーションで定義します。
  96.  
  97. t_opthdr構造は、処理されるオプションを定義し、次に示す構造と同じです。:
  98.  
  99.         struct t_opthdr
  100.         {
  101.                 unsigned long len;
  102.                 unsigned long level;
  103.                 unsigned long name;
  104.                 unsigned long status;
  105.                 struct t_kpalive kp_val;
  106.         };
  107.  
  108.         len      t_opthdrの長さ
  109.  
  110.         level    INET_TCP
  111.  
  112.                  次の定義が必要です:
  113.                  #define INET_TCP  0x06
  114.  
  115.         name     TCP_KEEPALIVE
  116.  
  117.                  次の定義が必要です:
  118.                  #define TCP_KEEPALIVE 0x08
  119.  
  120.         status   T_SUCCESSまたはT_FAILUREは、処理のステータスを示します。
  121.  
  122.         kp_val   t_kpalive構造は、KeepAliveタイマのステータスとタイマの
  123.                  間隔を定義します。構造は次のようになります。:
  124.  
  125.  
  126.         struct   t_kpalive {
  127.                              long kp_onoff;
  128.                              long kp_timeout;
  129.                            }
  130.         kp_onoff     0 - KeepAlivesを使用可にします。
  131.                      1 - KeepAlivesを使用不可にします。
  132.  
  133.         kp_timeout   タイマの値を分で示します。値が5より小さい場合は、
  134.                      タイムアウトの値は2時間に設定されます。
  135.  
  136. TCP/IPの動作
  137. ------------
  138. KeepAliveタイマの期限が一度切れると、TCP/IPはKeepAliveパケットをTCPピアに
  139. 送信します。TCPピアが反応した場合は、タイマはリセットされます。接続の往復
  140. にかかる予想時間内にTCPピアが反応しない場合は、TCP/IPはKeepAliveパケットを
  141. 再送信します。TCP/IPは、その標準再試行アルゴリズムに従って再試行します。
  142. 指数のbackoffアルゴリズムが、再送のためのラウンドトリップ時間の増加を概算
  143. することに使われます。つまり、KeepAliveタイマの期限が切れた後も、TCP/IPが
  144. その標準再試行を終えるまで接続は閉じないということになります。
  145.