有人可以帮忙吗?我被卡住了。我有一个EC2实例,以及一个在本地工作正常的客户端/服务器Sun RPC应用程序。
服务器部分在EC2实例上运行正常(启动,等待客户端连接。
在我的家用电脑上运行的客户端部分总是说:
localhost: RPC: Remote system error - Connection refused
我在客户端和服务器上运行了rpcinfo -p,它们对我来说没问题:
EC2服务器:
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
536871049 2 udp 36832
536871049 2 tcp 43244
客户端:
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
199 1 udp 35634
199 1 tcp 43545
536871049 2 udp 52507
536871049 2 tcp 57459
536871048 1 udp 49297
536871048 1 tcp 54609
我在EC2实例上为TCP入站打开了端口111。它从客户端看起来是开放的:nping -p 111 ec2-XX-XXX-XX-XX.us-west-2.compute.amazonaws.com返回响应。
任何想法?
答案 0 :(得分:0)
啊,正如mootmoot指出的那样,我在本地运行我的客户端。
然而,当我改变它时,它仍然无效。除了端口111,您还必须打开运行该服务的端口。我的程序号为536871049,所以我必须为TCP打开端口43244(我正在使用的协议)。
但是,每次重新启动服务时,端口号都会随着模板服务器代码调用而改变:
transp = svctcp_create(RPC_ANYSOCK, 0, 0);
将服务绑定到任意端口。因此,我必须针对已知端口设置自己的套接字,然后更改上面的调用以使用该套接字。
然后,您可以进入AWS,打开端口111上的EC2服务器的入站连接以及上面的端口设置。一切正常!