Skip to content

Latest commit

 

History

History
58 lines (38 loc) · 1.47 KB

README.md

File metadata and controls

58 lines (38 loc) · 1.47 KB

Jamulus python library

The library supports sending and receiving of Jamulus protocol messages.

Usage example

  • Fetch server list from central (directory) server
import jamulus

server = ("<hostname>", jamulus.DEFAULT_PORT)

jc = jamulus.JamulusConnector()
jc.sendto(server, "CLM_REQ_SERVER_LIST")

try:
    while True:
        addr, key, count, values = jc.recvfrom(timeout=1)
        if key == "CLM_SERVER_LIST":
            for server in values:
                print(f'{server["name"]} ({server["max_clients"]})')
except TimeoutError:
    pass

Scripts

central_server.py

  • Simple implementation of a Jamulus Central Server
  • Jamulus Servers can register / unregister
  • Jamulus Clients can get list of registered servers

central_proxy.py

  • Collect server lists from multiple Jamulus Central Servers
  • Filters servers by their country ID
  • Jamulus Clients can get filtered list of servers

dummy_server.py

  • Simulates a Jamulus Server

dummy_client.py

  • Simulates a Jamulus Client connecting to a Jamulus Server

Limitations

  • The implementation is not proven / tested to be 100% reliable
  • Certain exceptions are not handled and can crash the process

References

These projects were very helpful to understand the Jamulus protocol: