Skip to content

Python library for sending and receiving Jamulus protocol messages

License

Notifications You must be signed in to change notification settings

passing/jamulus-python

Repository files navigation

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:

About

Python library for sending and receiving Jamulus protocol messages

Topics

Resources

License

Stars

Watchers

Forks

Languages