Since I don’t wish to contribute to the ERE, here is my entire list server documentation. This covers most ports except for 10056 because some people (as politely as I can phrase it) have not let anyone know the syntax for them.

This article is useful for people who want to write programs involving anything from launchers to a new list server program.

Just a quick note: Ports 10055, 10056 and extra ports (10058, 10059) not used by the official list servers can be ommited. For communication with other list servers, port 10053 can also be used.

Binary List Protocol (10053 TCP)

A connection to the list server is sent on port 10053 (TCP):

First byte: 0×07 (size)
Next four bytes: ASCIILIST
Next two bytes: 0×0101

A list server will send a packet back. This will be seen as:

First byte: Size of packet
Next four bytes: IP of server, byte-flopped
Next two bytes: Server port, byte-flopped
Rest of the packet: Server name (in ASCII)

LMS (ListMyServer) Protocol (10054 TCP)

When JJ2 connects to attempt to list a server, it will send a packet to open the
connection. The format is as follows

First two bytes: Byte-swapped port
Next 33 bytes: Server name (in ASCII)
Next byte: Current players
Next byte: Server capacity
Next byte: Game type (add 0×01 if private)
Next four bytes: Server version in ASCII. 21 (0×32312020) will return 1.21.

The server will periodically send information to the list server.

Nebula’s listserver sends a ping to servers every so often to check if they are still up. It also prevents servers with binary (non-ascii) names from being listed. These checks is not used by the official list server.

List Server Status Protocol (10055 TCP)

This will display a plain-text message and is not used by the main Jazz Jackrabbit 2

ServerNet Protocol (10056 TCP)

This protocol is used for communicating between list servers. Only authorised IPs can
connect on this port. If the IP is considered invalid, the user will get the message:

Mommy told me never to talk to strangers.

ASCII Server List Protocol (10057 TCP)

Connections will send a plain text message. The syntax is:

IP:Port location gametype* version** uptime players*** Server Name Goes Here

  • Since the gametype when sent through JJ2 is always added by one when the server is private, i have included this as one word. The actual data reads as “private battle” or “public capture” and so on.

** This is a 4-character ASCII string. Versions always use a 4-character string. For example, 1.23 would be “23 “.

*** More specifically, the syntax is [current/capacity].

Message of the Day Protocol (10058 TCP)

This sends a message that is often useless to the user who requested it.
Found only on Nebula lists.

Admin CP Protocol (10059 TCP)

This is used on Nebula’s list server program. I cannot provide information here as I do not have its documentation.