現在、クライアント/サーバー アプリケーションのサーバー部分を 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
セキュリティ上の理由から、ポート マッパーは常に定義済みのポート (私のアプリケーションはマシン上でのみ) を使用することをお勧めしますが、これを行う方法を見つけることができませんでした。誰でも私を助けることができますか?