监听器实用程序 dblsn 在 Windows 设备(包括 Windows CE)上配置并启动监听器。
本节提供监听器实用程序的详细参考。有关使用信息,请参见监听器。
有关 Palm 设备的信息,请参见Palm 设备监听器。
dblsn [ options ] -l message-handler [ -l message-handler... ]
message-handler :
[ filter;... ]action
[ ;continue = yes ]
[ ;maydial = no ]
[ ;confirm_delivery = no ]
filter :
[ subject = string ]
[ content = string ]
[ message = string | message_start = string ]
[ sender = string ]
action :
action = command[;altaction = command ]
command :
start program [ program-arguments ]
| run program [ program-arguments ]
| post window-message to { window-class-name | window-title }
| tcpip-socket-action
| DBLSN FULL SHUTDOWN
tcpip-socket-action :
socket port=app-port
[ ;host=app-host ]
[ ;sendText=text1 ]
[ ;recvText= text2 [ ;timeout=num-sec ] ]
window-message : string | message-id
选项 以下选项可用于配置监听器。这些选项都是可选的。
| dblsn 选项 | 说明 |
|---|---|
| @data | 读取来自指定的环境变量或配置文件的选项。如果两者都存在,则使用环境变量。请参见存储监听器选项。 |
| -a option |
指定监听器 DLL 选项。如果指定多个 -d 选项,则每个 -a 都是针对其紧跟的 -d 选项。
若要指定多个选项,请重复使用 -a。例如, 若要查看 dll 的选项,请键入 |
| -d filename |
指定要使用的监听器 dll。缺省 dll 为 lsn_udp.dll。
对于 SMTP 网关,可以指定多个 dll。有关列表,请参见监听库。 还可创建自定义监听库。请参见 MobiLink 监听器 SDK。 若要启用多通道监听,请通过重复使用 -d 指定多个 dll。在每个 -d 选项后指定与此 dll 相关的 -a 选项和 -i 选项。例如,
|
| -e device-name | 指定设备名称。缺省情况下,自动从系统中抽取设备名称。如果不使用 -e,则必须确保所有设备有唯一的名称。 |
| -f string | 指定设备的额外信息。缺省情况下,该信息为操作系统版本。使用该选项将替换缺省值。 |
| -g | 使用 -x 时停止跟踪 UDP 地址。该选项可用于不需要设备跟踪但需要传送确认的情况。 |
| -i seconds | 设置 SMTP 连接的轮询间隔(以秒为单位)。这是监听器检查消息的频率。如果使用多个 -d 选项,则每个 -i 设置都是针对其紧跟的 -d 选项。SMTP 的缺省值为 30 秒。对于 UDP 连接,监听器尝试立刻连接。 |
| -m | 打开消息记录。缺省值是 off。 |
| -o filename | 将输出记录到文件中。如果没有使用 -o,则输出将被记录到控制台窗口。 |
| -os bytes | 指定日志文件的最大大小(以字节为单位)。最小大小为 10 000。缺省情况下,没有限制。 |
| -ot filename | 将输出记录到文件,但会首先截断文件。 |
| -p | 允许空闲时自动关机。该选项仅在 CE 设备上有效。使用它可允许设备在空闲时关机。缺省情况下,监听器阻止设备自动关机以使监听可以继续。 |
| -q | 以最小化窗口运行。 |
| -t {+|-} ml_user_alias |
注册用于通知的远程数据库,这样使用设备跟踪时可按名称对远程数据库寻址。
请参见用于设备跟踪的监听器选项。 |
| -u Listener_name |
为该监听器指定一个唯一名称。该名称用于上载跟踪信息和传送确认,还可用于 DeviceTracker 网关的通知地址。
Listener_name 为 MobiLink 用户名。像其它 MobiLink 用户名一样,它必须是唯一的,并且您必须将其添加到统一数据库上的 ml_user MobiLink 系统表中。有关详细信息,请参见创建 MobiLink 用户。 缺省监听器名称为 device-name-dblsn。 请参见用于设备跟踪的监听器选项。 |
| -v [ level ] |
设置 dblsn 日志和控制台的详细级别。level 可以是 0、1、2 或 3:
|
| -w password |
指定 Listener_name 的口令。
请参见用于设备跟踪的监听器选项。 |
| -x {http|tcpip} [(keyword=value;...)] |
为 MobiLink 同步服务器指定网络协议和协议选项。有关协议选项的列表,请参见 -x 选项。该信息对于监听器将设备跟踪信息和传送确认发送至统一数据库是必需的。
请参见用于设备跟踪的监听器选项。 |
| -y new_password |
为监听器名称指定新的 MobiLink 口令。如果鉴定系统允许远程设备更改其口令,则该选项允许它们发送新的口令。
请参见用于设备跟踪的监听器选项。 |
消息处理程序 使用 -l 选项可以指定消息处理程序,即过滤器操作对。过滤器决定应该处理哪些消息,当过滤器匹配消息时会调用操作。
可以指定多个 -l 实例。每个 -l 实例为一条进来的消息指定不同的消息处理程序。按指定的顺序处理消息处理程序。
您还可以为消息处理程序指定以下选项:
continue=yes
指定监听器在发现第一个匹配后应继续工作。该选项可用于指定多个 -l 子句以使一条消息能启动多个操作的情况。缺省值是 no。
maydial=no
指定操作不能对调制解调器拨号。这为监听器提供了信息以确定是否在执行操作前释放调制解调器。该选项可用于操作或替代操作需要对监听器所使用的调制解调器进行独占访问的情况。缺省值是 yes。
confirm_delivery=no
指定该处理程序不应确认传送。如果发送消息的网关的 confirm_delivery 属性设置为 yes,则消息需要确认。只有在消息需要确认且处理程序接受消息时才能确认传送。缺省值是 yes。
通常无需指定该选项。缺省情况下第一个接受消息的处理程序将发送传送确认(如果需要)。该选项可用于多个处理程序可能接受同一条消息的情况,以使能够更好地控制哪个处理程序确认传送。
过滤器 您指定一个过滤器来与进来的消息进行比较。如果过滤器匹配,则将调用您指定的操作。
过滤器是可选的。如果未指定过滤器,则将在收到任何消息时执行操作。该选项可用于调试或希望将一个捕获所有消息的处理程序作为最后的消息处理程序的情况。
有关使用 subject 或 content 过滤器的信息,请参见使用主题和内容过滤器。
有关使用 message、message_start 或 sender 过滤器的信息,请参见使用过滤器 message、message_start 和 sender。
操作和替代操作
每个过滤器都与一个操作和一个称为 altaction 的替代操作(可选)相关联。如果消息满足过滤器的条件,将调用操作。必须指定一个操作。如果指定替代操作,则仅当操作失败时才调用替代操作。
对于每个操作和替代操作都有一条命令,可以是 start、run、post、socket 或 DBLSN FULL SHUTDOWN。
start
生成一个进程。启动程序时,监听器将继续监听更多消息。
当 start(启动)程序时,监听器并不等待返回代码,因此当它无法找到或启动程序时只能指示操作失败。
下面的示例使用一些命令行选项启动 dbmlsync,部分选项来自消息。
"action='start dbmlsync.exe @dbmlsync.txt -n $content -wc dbmlsync_$content -e sch=INFINITE';"
run
运行程序并等待其结束。监听器在进程完成后继续监听。
当 run(运行)程序时,如果监听器无法找到或启动程序或返回非零返回代码,则监听器将确定程序出现故障。
下面的示例使用一些命令行选项运行 dbmlsync,部分选项来自消息。
"action='run dbmlsync.exe @dbmlsync.txt -n $content';"
post
将窗口消息发布到窗口类。调度处于打开状态时 dbmlsync 需要该选项。当通知使用 Windows 消息的应用程序时也使用 Post。
可以按照消息内容或窗口消息的 ID(如果存在)标识窗口消息。
可以按照窗口类的名称或窗口的标题标识窗口类。如果按照名称标识窗口类,则可以使用 dbmlsync -wc 选项指定窗口类名。如果按照窗口标题标识窗口类,则只能使用顶级窗口的标题标识窗口类。
如果窗口消息或窗口类名中存在非数字字母字符,如空格或标点符号,可将消息或名称用单引号括起来。在此情况下,要在字符串中使用单引号,请连续使用两个单引号。例如,要将 my'message 发布到 my'class,请使用下面的语法:
... -l "action='post my''''message to my''''class':"
或者
... -l "action='post ''my''''message'' to ''my''''class''':"
下面的示例将一条注册为 dbas_synchronize 的 Windows 消息发布到以类名称 dbmlsync_FullSync 注册的 dbmlsync 实例。
"action='post dbas_synchronize to dmblsync_FullSync';"
有关详细信息,请参见 -wc 选项。
socket
通过建立 TCP/IP 连接通知应用程序。该选项对于将动态信息传递给运行中的应用程序尤其有用。它还适用于集成 Java 和 Visual Basic 应用程序,因为 Java 和 VB 不支持自定义窗口消息传送,而 eVB 不支持命令行参数。可以通过仅指定一个端口连接到本地套接字,或者通过指定主机和端口连接到远程套接字。使用 sendText 可发送字符串。用户还可选择验证响应是否与 recvText 预期相同。使用 recvText 还可指定超时时间以避免应用程序或网络故障情况下挂起。
执行 socket(套接字)操作时,如果监听器在超时前无法连接、发送或接收预期的确认,监听器将确认操作失败。
下面的示例将 $sender=$message 中的字符串转发到在端口 12345 监听的本地应用程序,并希望应用程序在 5 秒内发送"beeperAck"作为确认。
-l "action='socket port=12345; sendText=$sender=$message; recvText=beeperAck; timeout=5'"
DBLSN FULL SHUTDOWN
使监听器实用程序关机。关机后,监听器停止处理入站消息并停止同步设备跟踪信息。远程用户必须重新启动监听器才能继续使用服务器启动的同步。该功能在测试时最有用。
例如,action='DBLSN FULL SHUTDOWN'
在每个 -l 实例中只能指定一个操作和一个替代操作。如果希望一个操作执行多个任务,可以编写包含多个操作的覆盖程序或批处理文件,然后作为单个操作运行。
以下是替代操作的一个示例。在该示例中,$content 是用于连接 MobiLink 的协议选项。主操作是将 dbas_synchronize Windows 消息发布到 dbmlsync_FullSync 窗口。如果主操作失败,该示例将使用替代操作启动(而非运行)具有窗口类名 dbmlsync_FullSync 的 dbmlsync。这是使监听器与 dbmlsync 调度一起工作的标准方法。
-l "subject=sync;
action='post dbas_synchronize to dbmlsync_FullSync';
altaction='start dbmlsync.exe
@dbmlsync.txt
-wc dbmlsync_FullSync
-e adr=$content;sch=INFINITE'"SQL Anywhere Studio 9.0.2
版权所有 © 1989–2005 Sybase, Inc. 部分版权所有 © 2001–2005 iAnywhere Solutions, Inc. 保留所有权利。