サーバー・デーモン・プログラム

Return

[例]

     H            Y/                                    1
     H*---------------------------------------------------------------*
     H* PROGRAM-ID    :    SOKRPGSD                                   *
     H* REMARKS       :    RPGソケットデーモン                        *
     H* AUTHOR        :    Y.IDE                                      *
     H* DATE-WRITEN   :    1999/03/27                                 *
     H* VERSION       :    01.00 ORIGINAL                             *
     H*---------------------------------------------------------------*
     FSOKSDFM CF  E                    WORKSTN
     C*
     E                    TXT     1   3 70
     C*
     C                     MOVEATXT,1     FLD01
     C                     EXFMTSC01
     C           *IN03     IFEQ '1'
     C                     GOTO TAG#E
     C                     ENDIF
     C* ソケットオープン --------------------------------------*
     C                     CALL 'SKOPEN'
     C                     PARM           SD      4
     C                     PARM           RC      1
     C*
     C           RC        IFEQ 'E'
     C                     GOTO TAG#E
     C                     ENDIF
     C* ソケットバインド --------------------------------------*
     C                     CALL 'SKBIND'
     C                     PARM           SD      4
     C                     PARM           RC      1
     C                     PARM 'ANY'     ANY    15
     C                     PARM '30031'   PORT    5
     C*--------------------------------------------------------*
     C* ANYもしくは、IPアドレスのどちらかを指定する
     C* 以下はIPアドレス固定でバインドする例です。
     C*--------------------------------------------------------*
     C****                 CALL 'SKBIND'
     C****                 PARM           SD      4
     C****                 PARM           RC      1
     C****                 PARM           IP
     C****                 PARM '30031'   PORT    5
     C*
     C           RC        IFEQ 'E'
     C                     GOTO TAG#E
     C                     ENDIF
     C*
     C                     MOVEATXT,2     FLD01
     C                     WRITESC01
     C           1         DO   3         X       20
     C* ソケットリッスン --------------------------------------*
     C                     CALL 'SKLISN'
     C                     PARM           SD      4
     C                     PARM           RC      1
     C*
     C           RC        IFEQ 'E'
     C                     GOTO TAG#E
     C                     ENDIF
     C* ソケットアクセプト ------------------------------------*
     C                     CALL 'SKACPT'
     C                     PARM           SD      4
     C                     PARM           RC      1
     C                     PARM           ND      4
     C           RC        IFEQ 'E'
     C                     GOTO TAG#E
     C                     ENDIF
     C*--------------------------------------------------------*
     C* 接続先アドレス検索 ------------------------------------*
     C                     CALL 'SKGETP'
     C                     PARM           ND      4
     C                     PARM           RC      1
     C                     PARM           CIP    15
     C                     PARM           CPORT   5
     C           RC        IFEQ 'E'
     C                     GOTO TAG#E
     C                     ENDIF
     C* ホスト名検索 ------------------------------------------*
     C                     MOVELCIP       HOSTNM
     C                     CALL 'SKGETH'
     C                     PARM           HOSTNM128
     C                     PARM           RC      1
     C                     PARM           IPSTR  15
     C                     PARM           IPHOST128
     C*
     C                     MOVELIPHOST    CHOSTN
     C           RC        IFEQ 'E'
     C                     MOVE *BLANK    CHOSTN
     C                     MOVEL'ERROR'   CHOSTN
     C                     ENDIF
     C* 子プロセス生成 ----------------------------------------*
     C                     CALL 'SKSPWN'
     C                     PARM           ND      4
     C                     PARM           RC      1
     C                     PARM           PID     4
     C                     PARM 'SOKRPGSP'PGM    10
     C                     PARM 'SOKRPG'  LIB    10
     C           RC        IFEQ 'E'
     C                     GOTO TAG#E
     C                     ENDIF
     C*--------------------------------------------------------*
     C*画面表示
     C                     MOVEATXT,3     FLD01
     C                     MOVELX         FLD01
     C                     WRITESC01
     C*--------------------------------------------------------*
     C                     ENDDO
     C* ソケットクローズ --------------------------------------*
     C           TAG#E     TAG
     C                     CALL 'SKCLOS'
     C                     PARM           SD      4
     C                     PARM           RC      1
     C*--------------------------------------------------------*
     C                     SETON                     LR
     C                     RETRN
** INIT TEXT
サーバープログラムを実行するには、実行キーを押す。
....クライアントプログラムの接続待機中....
00個の子プロセスを起動しました...

【解説】

クライアントからの接続をまち、実際の接続後は、画面に接続相手の情報を表示したのち、 子プロセスのプログラムを起動し、データの送受信は子プロセスにまかせ、自分は、 次のクライアントからの接続をまつ、3回子プロセスを起動後にプログラム終了する。

【実行結果】


[Return]