TAP/SNPP Relay (TSR) is a program which listens for TAP (Telocator Alphanumeric Protocol) paging commands on a network link, connects to an SNPP (Simple Network Paging Protocol) server and converts the TAP requests to SNPP. This allows an existing TAP-only application to send pages via SNPP.
Note: TAP is typically used to send pages via a serial link (e.g. a modem connection), but TSR can only listen to network requests. Consequently it relies on an application such as TAL Technologies' TCP-Com for Microsoft Windows to redirect serial traffic to a network link.
These instructions assume you are using Microsoft Windows.
TSR is Free/Open source software licensed under the General Public License.
TSR listens for TCP/IP socket connections containing TAP commands. As TAP
commands are normally sent via a serial link, a program such as TCP-Com must
be used to redirect the messages sent to a serial port to a TCP/IP socket.
TCP-Com can create virtual
COM ports for this purpose. When paging
requests are received, TSR establishes a second socket connection, this time
to the SNPP server of your paging bureau and sends the message to the pager
using SNPP commands.
Although it uses TCP/IP sockets your TAP application, TCP-Com and TSR would typically run on one computer as shown in the diagram below:

If the SNPP server is slow, pagers are queued so that TSR continues to respond to TAP requests. Because of this, any failures are not sent to the TAP application, although they are listed in the TSR window.
Should you require messages to some pagers to be sent by a different provider, you can configure additional queues with a list of pagers to be diverted.
TSR requires the Mono runtime, download and install this.
TCP-Com is proprietary software, please contact TalTech regarding pricing for this. An evaluation version is available at no cost. Prior to using TSR you will need to use TCP-Com to set up a client connection on the port for TSR (see Configuration). Your port settings (baud, parity, etc.) will need to match those of your TAP application.
Extract the files from the archive in the location required.
Configuration settings are stored in the XML file
TapSnppRelay.exe.config. A simple example configuration file to
send pages via a single provider is shown below:
<configuration>
<appSettings>
<add key="QueueCount" value="1"/>
<add key="Queue1.Servers" value="10.0.0.1;10.0.0.2"/>
<add key="Queue1.Login" value="LETMEIN"/>
<add key="MaxQueue" value="5"/>
<add key="MaxHistory" value="100" />
<add key="TAPServerPort" value="21210" />
</appSettings>
</configuration>
The example below uses the diversion feature to send messages to 283931 and 207216 to different servers:
<configuration>
<appSettings>
<add key="QueueCount" value="1"/>
<add key="Queue1.Servers" value="10.0.0.1;10.0.0.2"/>
<add key="Queue1.Login" value="LETMEIN"/>
<add key="Queue2.Servers" value="172.168.8.12;172.168.8.13"/>
<add key="Queue2.Login" value="PASSWORD"/>
<add key="Queue2.Pagers value="283931;207216"/>
<add key="MaxHistory" value="100" />
<add key="TAPServerPort" value="21210" />
</appSettings>
</configuration>
Note that Queue1 is always the default and any pager IDs that are not
included for other queues are sent to this one (i.e. you cannot set
Queue1.Pagers).
The table below describes these options.
| Option | Description | Required | Default | Range |
|---|---|---|---|---|
| QueueCount | Number of SNPP queues | Mandatory | 1 | Positive integer |
| Queue1.Servers | One or more SNPP servers separated by semicolons for default queue | Mandatory | N/A | IP addresses |
| Queue1.Login | Login ID for default queue | Optional | N/A | String value |
| Queuen.Servers | One or more SNPP servers separated by semicolons if QueueCount > 1 | Optional | N/A | IP addresses |
| Queuen.Login | Login ID if QueueCount > 1 | Optional | N/A | String value |
| Queuen.Pagers | List of pagers separated by semicolons to be diverted to this queue | Optional | N/A | String value |
| MaxQueue | Maximum number of pages to queue if SNPP server slow/fails | Optional | N/A | Positive integer |
| MaxHistory | Maximum entries in history list | Optional | 100 | Integer value |
| TAPServerPort | TCP/IP port to listen on for TAP requests | Optional | 2100 | 1 - 65535 |
| SuppressDuplicates | If the pager message and recipient is identical to the previous message and recipient, the message is not sent. | Optional | False | True/False |
| MaxDuplicateHistory | If SuppressDuplicates is enabled, this is the number of recent message/recipient pairs to check | Optional | 1 | Positive integer |
The program can be started in two ways:
mono <path to TSR
directory>\TapSnppRelay.exe.<path to TSR directory>\TapSnppRelay.exe.Once running, TAP pages should appear in the TSR window's list. This is shown below, the red background for the fourth page indicates a failure:

TSR is written in C#. The source code is available from the
src directory. To compile the source, open a command window with
the Mono environment set (see Running the Program),
change to the TapSnppRelay directory and type mcs src/*.cs
-out:TapSnppRelay.exe -pkg:gtk-sharp-2.0 -target:winexe.