ArcGIS License Manager端口设置知多少(二)

0
分享 2019-03-15
上一篇文章中介绍了如何设置ArcGIS License Manager的端口以及如何设置防火墙,这篇文章就看下其背后的原理。

三、ArcGIS许可服务器与ArcGIS客户端间的通信原理:

我们知道lmgrd.exe是用于管理ArcGIS许可的,该后台进程的端口默认是27000,那么我们从27000端口开始顺藤摸瓜,一步一步寻找答案。
在没有修改service.txt的情况下,在许可服务器所在机器上以管理员身份运行cmd,然后输入netstat –abn|findstr27000”查找, 发现27000与49722的端口建立了通信,注意127.0.0.1是本机地址,也就是机器内部通讯用的。

接下来查找49722端口对应什么进程,打开任务管理器发现49722是ARCGIS.exe程序,也就是说Imgrd.exe与ARCGIS.exe产生了通信,同时ARCGIS.exe还有一个端口是49718,该端口与远程机器192.168.100.81进行了通信。

然后打开ArcMap客户端所在机器的任务管理器界面,发现ArcMap.exe与远程的49718端口进行了通信,也就是上一步的ARCGIS.exe。
:192.168.100.86是ArcGIS License Manager所在机器的IP,192.168.100.81是ArcMap所在机器的IP。
看到这里相信大家就会明白,在没有修改service.txt文件的情况下,Imgrd.exe的27000端口会先和本机的ARCGIS.exe进行通信,然后客户端ArcMap.exe再和该ARCGIS.exe的端口进行通信,建立连接,所以这个ARCGIS.exe端口也就是上图中的49718才是最终ArcGIS客户端与ArcGIS服务器端进行通信的端口,也就是需要将该端口开放给服务器端的防火墙,而27000则是本机进行通讯用的。
但由于这个端口号不固定且端口号又比较大,所以我们需要设置一个小的并且固定的端口号,以便用户将这个固定端口开放给防火墙,设置方法就可以参考上篇文章
那么我们看下修改service.txt文件后会有什么变化:



通过上图发现,这时ARCGIS.exe就固定在1234端口了,所以原则上只需要在服务器的防火墙中只开放该端口即可,这时在客户端直接使用1234@IP就可以成功连接。
后来我测试客户端直接输入服务器IP看是否可以连接,发现不行。这是为什么呢?因为客户端如果不用port@IP这种写法,那么就无法知道ArcMap.exe要与端口为1234的ARCGIS.exe进行连接,也就是说ArcMap无法找到1234端口的ARCGIS.exe,建立不了通信,所以连接不上。这就是为什么上篇文章要强调必须要用port@IP才能连接的原因。
细心的你也许会发现,我们之前说27000端口是内部通讯用的,那么我们为什么还要开放27000端口呢?答案就是27000端口可以帮助我们找到1234端口,如下图,如果防火墙中同时开放了1234和27000端口,那么客户端的ArcGIS Administrator里设置1234@IP或者27000@IP都可以直接找到端口为1234的ARCGIS.exe:

但如果直接输入IP,那么ArcMap.exe会从27001端口开始一直找到27009,都没有连接成功才会找到1234端口,这也是为什么上篇文章中会说如果只设置IP的话,开启ArcMap的过程会比设置port@IP会稍慢一点点的原因。

文章就写到这里,如有哪里写的不对的地方,欢迎大家留言。

文章来源:https://blog.csdn.net/xinying180/article/details/88573401

0 个评论

要回复文章请先登录注册