在通过startace启动ctreesql或者直接启动ctreesql后,可以看到ctreesql进程在监听两个端口,缺省情况下一个是6597,一个是5597。参见lsof查看的结果:
$lsof|grep ctreesql|grep TCP
ctreesql 2740 root 15u IPv4 13763 0t0 TCP *:6597 (LISTEN)
ctreesql 2740 root 16u IPv4 13761 0t0 TCP *:5597 (LISTEN)
(1) 6597端口
就是前面曾经提到的用配置文件的配置项SQL_PORT配置的这个,该端口提供SQL服务。如果修改了这个端口,在使用SQL类工具时,在需要指定database的时候,需要带上端口号和主机名(IP),使用port@主机:databasename的格式,比如:
$isql –u admin –a ADMIN 9999@localhost:ctreesql
$dbschema –u admin –a ADMIN 9999@localhost:ctreesql
如果还是只用database名称的话,会报错类似如下的错误:
error in tcp bind 111
error(-20212): Error in Network Daemon
(2) 5597端口
这个端口提供ISAM服务。大部分在admin目录下的工具会通过这个端口连接,比如前面介绍过的ctadmn, ctstop等。
该端口实际上是由SERVER_NAME的缺省值FAIRCOMS计算出来的,计算规则为所有字母的ascii码值总和再加5001。这个端口可以通过在配置文件中使用参数SERVER_PORT来修改,比如在配置文件增加一行:
SERVER_PORT 8888
然后启动服务,再用lsof查看的结果为:
ctreesql 3472 root 15u IPv4 17118 0t0 TCP *:6597 (LISTEN)
ctreesql 3472 root 16u IPv4 17116 0t0 TCP *:8888 (LISTEN)
如果在配置文件中同时包含SERVER_NAME和SERVER_PORT,那么将采用SERVER_PORT的配置。另外,通过SERVER_NAME也可以直接配置端口,但必须在端口前增加一个#字符,否则会用上面的端口计算规则计算出端口。比如:
SERVER_NAME #8888
的配置将启用8888端口提供ISAM服务。
如果修改了ISAM服务端口,客户端工具连接时需要以#加端口的方式,例如:
$./ctstop -auto -u admin -a ADMIN #8888