1

現在、クライアント/サーバー アプリケーションのサーバー部分を OpenVMS から Linux (RHEL) に移行しています。通信は RPC 経由で行われます。ポートマッパーが (OpenVMS の場合のように) 次々に割り当てるのではなく、割り当てられたポートを範囲全体に「広げる」ことがわかりました。

次のコード (GNU-C) でポートを割り当てます。

(void)pmap_unset(server_nr, KOMVERS) ;
transp = svctcp_create(RPC_ANYSOCK, 0, 0) ;
if (transp == NULL)
{
    fprintf(stderr, "cannot create tcp service.\n") ;
    exit(EXIT_FAILURE) ;
}
if (!svc_register(transp, server_nr, KOMVERS, komprog_1, IPPROTO_TCP))
{
    fprintf(stderr, "unable to register (%ld, tcp).\n",server_nr) ;
    exit(EXIT_FAILURE) ;
}

server_nr は、クライアントがサーバーにアクセスするために使用するサーバー プログラムの番号 (800000000 から始まる) です。いくつかのサーバープロセスを開始した後、私は得る

... rpcinfo を使用

800000101   1   tcp    0.0.0.0.250.211     - unknown
800000102   1   tcp    0.0.0.0.250.211     - unknown

... netstat の使用

Proto Recv-Q Send-Q Local Address   Foreign Adress State   PID/Program
tcp   0      0      0.0.0.0:52414   0.0.0.0:*      LISTEN  1604/Server01
tcp   0      0      0.0.0.0:25600   0.0.0.0:*      LISTEN  1606/Server02

セキュリティ上の理由から、ポート マッパーは常に定義済みのポート (私のアプリケーションはマシン上でのみ) を使用することをお勧めしますが、これを行う方法を見つけることができませんでした。誰でも私を助けることができますか?

4

0 に答える 0