我目前正在将客户端/服务器应用程序的服务器部分从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
出于安全原因,我希望端口映射器始终使用已定义的端口(我的应用程序是机器上唯一的应用程序),但我无法找到如何执行此操作。 有人能帮助我吗?