```text
_
| |__ ___ _ __ ___ ___ _ __ _ _
| '_ \ / __| '_ ` _ \ / __| | '_ \| | | |
| |_) | (__| | | | | | (__ _| |_) | |_| |
|_.__/ \___|_| |_| |_|\___(_) .__/ \__, |
|_| |___/
```
`bcmc` is a CLI-centric IP broadcast and multicast tool built with Python. it is a testing tool for generating and validating broadcast or multicast traffic.
`bcmc` can be run as a server to generate broadcast or multicast traffic or `bcmc` can be run as a client to receive broadcast or multicast traffic. it is a CLI-based client/server tool inspired by iperf.
`bcmc` is developed by Josh Schmelzle and Kevin L. Marshall and is released under a three-clause BSD license.
## why `bcmc`?
Existing tools such as Multicast Hammer are platform specific and may have unsupported system dependencies on modern OSes. `bcmc` aims to be a free cross-platform tool that can be used from *unix or Windows. While `bcmc` aims to function cross-platform, please note some optional features may not work on certain OSes.
## usage
`bcmc` is a client/server tool which functions similar to iperf. `bcmc` can be used to test and validate broadcast or multicast on 802.11 or 802.3 networks.
steps:
* You will need two hosts
* Place both hosts on the target test network
* Use one host to run `bcmc` in client mode (receive)
* Use the other host to run `bcmc` in server mode (transmit)
## broadcast traffic
In broadcast mode, the default behavior for `bcmc` is to send IP layer UDP packets to 255.255.255.255.
## multicast traffic
In multicast mode, the default behavior for `bcmc` is to send IP layer UDP packets to 239.0.0.2 as the multicast group address.
## modes (-s|-c)
`bcmc` can be run as client or server.
## traffic (-bc|-mc)
`bcmc` can generate broadcast or multicast IP packets.
## broadcast (-bc)
client usage:
```bash
bcmc -c -bc
```
server usage:
```bash
bcmc -s -bc
```
## multicast (-mc)
client usage:
```bash
bcmc -c -mc
```
server usage:
```bash
bcmc -s -mc
```
## discovery tip
* to understand or "try out" the behavior of `bcmc`, you can also use `bcmc` with two different terminals on the same host.
* in one terminal, run `bcmc` in client mode
* in the other, run `bcmc` in server mode
* you should see incrementing messages from `bcmc` running in server mode in the terminal running `bcmc` as client mode.
## troubleshooting
On Windows, `bcmc` server (`-s`) mode will default to the interface with the lowest metric. If you are having issues where client (`-c`) mode is not receiving messages from server (`-s`) mode, investigate the metric by running `route PRINT` from conhost (cmd.exe) or PowerShell.
## optional arguments
```bash
usage: bcmc [-s|-c] [-bc|-mc] [options]
bcmc [-h|--help] [-v|--version]
options:
-h, --help show this help message and exit
-p 2002, --port 2002 port to listen on/connect to
-b <host>, --bind <host>
bind to the interface associated with provided <host> address (experimental)
--debug increase output for debugging purposes
-c, --client run in client mode
-s, --server run in client mode
-bc, --broadcast set traffic type to broadcast
-mc, --multicast set traffic type to multicast
--group 239.0.0.2 multicast group address (239.0.0.2 by default)
-i 1, --interval 1 interval to send multicast packets
--ttl 3 set the hop restriction in network for multicast server
--dscp 46 set the Differentiated Service Code Point value applied to packets sent in server mode
--padding 0 number of additional null bytes per payload which is sent in server mode
--payload 'string' add an arbitrary payload which is sent in server mode
```
Raw data
{
"_id": null,
"home_page": null,
"name": "bcmc",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": "Josh Schmelzle <josh@joshschmelzle.com>",
"keywords": "bcmc, broadcast, multicast",
"author": "Kevin L. Marshall",
"author_email": "Josh Schmelzle <josh@joshschmelzle.com>",
"download_url": "https://files.pythonhosted.org/packages/ca/74/05c06c02ae4034441550452d4fb4de3bfc7b76caee5e9104cbdad4f82f3a/bcmc-0.1.0.post1.tar.gz",
"platform": null,
"description": "```text\n _\n| |__ ___ _ __ ___ ___ _ __ _ _\n| '_ \\ / __| '_ ` _ \\ / __| | '_ \\| | | |\n| |_) | (__| | | | | | (__ _| |_) | |_| |\n|_.__/ \\___|_| |_| |_|\\___(_) .__/ \\__, |\n |_| |___/\n```\n\n`bcmc` is a CLI-centric IP broadcast and multicast tool built with Python. it is a testing tool for generating and validating broadcast or multicast traffic.\n\n`bcmc` can be run as a server to generate broadcast or multicast traffic or `bcmc` can be run as a client to receive broadcast or multicast traffic. it is a CLI-based client/server tool inspired by iperf.\n\n`bcmc` is developed by Josh Schmelzle and Kevin L. Marshall and is released under a three-clause BSD license.\n\n## why `bcmc`?\n\nExisting tools such as Multicast Hammer are platform specific and may have unsupported system dependencies on modern OSes. `bcmc` aims to be a free cross-platform tool that can be used from *unix or Windows. While `bcmc` aims to function cross-platform, please note some optional features may not work on certain OSes.\n\n## usage\n\n`bcmc` is a client/server tool which functions similar to iperf. `bcmc` can be used to test and validate broadcast or multicast on 802.11 or 802.3 networks.\n\nsteps:\n\n* You will need two hosts\n* Place both hosts on the target test network\n* Use one host to run `bcmc` in client mode (receive)\n* Use the other host to run `bcmc` in server mode (transmit)\n\n## broadcast traffic\n\nIn broadcast mode, the default behavior for `bcmc` is to send IP layer UDP packets to 255.255.255.255.\n\n## multicast traffic\n\nIn multicast mode, the default behavior for `bcmc` is to send IP layer UDP packets to 239.0.0.2 as the multicast group address.\n\n## modes (-s|-c)\n\n`bcmc` can be run as client or server.\n\n## traffic (-bc|-mc)\n\n`bcmc` can generate broadcast or multicast IP packets.\n\n## broadcast (-bc)\n\nclient usage:\n\n```bash\nbcmc -c -bc\n```\n\nserver usage:\n\n```bash\nbcmc -s -bc\n```\n\n## multicast (-mc)\n\nclient usage:\n\n```bash\nbcmc -c -mc\n```\n\nserver usage:\n\n```bash\nbcmc -s -mc\n```\n\n## discovery tip\n\n* to understand or \"try out\" the behavior of `bcmc`, you can also use `bcmc` with two different terminals on the same host.\n* in one terminal, run `bcmc` in client mode\n* in the other, run `bcmc` in server mode\n* you should see incrementing messages from `bcmc` running in server mode in the terminal running `bcmc` as client mode.\n\n## troubleshooting\n\nOn Windows, `bcmc` server (`-s`) mode will default to the interface with the lowest metric. If you are having issues where client (`-c`) mode is not receiving messages from server (`-s`) mode, investigate the metric by running `route PRINT` from conhost (cmd.exe) or PowerShell.\n\n## optional arguments\n\n```bash\nusage: bcmc [-s|-c] [-bc|-mc] [options]\n bcmc [-h|--help] [-v|--version]\n\noptions:\n -h, --help show this help message and exit\n -p 2002, --port 2002 port to listen on/connect to\n -b <host>, --bind <host>\n bind to the interface associated with provided <host> address (experimental)\n --debug increase output for debugging purposes\n -c, --client run in client mode\n -s, --server run in client mode\n -bc, --broadcast set traffic type to broadcast\n -mc, --multicast set traffic type to multicast\n --group 239.0.0.2 multicast group address (239.0.0.2 by default)\n -i 1, --interval 1 interval to send multicast packets\n --ttl 3 set the hop restriction in network for multicast server\n --dscp 46 set the Differentiated Service Code Point value applied to packets sent in server mode\n --padding 0 number of additional null bytes per payload which is sent in server mode\n --payload 'string' add an arbitrary payload which is sent in server mode\n```\n",
"bugtrack_url": null,
"license": "BSD-3-Clause",
"summary": "a CLI-centric broadcast and multicast validation tool",
"version": "0.1.0.post1",
"project_urls": {
"Homepage": "https://github.com/joshschmelzle/bcmc"
},
"split_keywords": [
"bcmc",
" broadcast",
" multicast"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "37bac370cabdcc33162b6d668298c2806f89ba072edc4158097ca37a05c22ba3",
"md5": "de7698576c7e62d83985f8e2827e2d6c",
"sha256": "66bb3f5dd76100dae89c52d203e204a2c20a3487e12a6151e524aa08e904bbde"
},
"downloads": -1,
"filename": "bcmc-0.1.0.post1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "de7698576c7e62d83985f8e2827e2d6c",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 11868,
"upload_time": "2024-11-30T17:03:08",
"upload_time_iso_8601": "2024-11-30T17:03:08.543146Z",
"url": "https://files.pythonhosted.org/packages/37/ba/c370cabdcc33162b6d668298c2806f89ba072edc4158097ca37a05c22ba3/bcmc-0.1.0.post1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ca7405c06c02ae4034441550452d4fb4de3bfc7b76caee5e9104cbdad4f82f3a",
"md5": "3e61850dddc918e1240f6f910de07ef5",
"sha256": "c7bfce6c70cad136f5f9e28443a46dad23dc3039b9aa67cbdab1a96cac13566c"
},
"downloads": -1,
"filename": "bcmc-0.1.0.post1.tar.gz",
"has_sig": false,
"md5_digest": "3e61850dddc918e1240f6f910de07ef5",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 10478,
"upload_time": "2024-11-30T17:03:29",
"upload_time_iso_8601": "2024-11-30T17:03:29.107449Z",
"url": "https://files.pythonhosted.org/packages/ca/74/05c06c02ae4034441550452d4fb4de3bfc7b76caee5e9104cbdad4f82f3a/bcmc-0.1.0.post1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-11-30 17:03:29",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "joshschmelzle",
"github_project": "bcmc",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"tox": true,
"lcname": "bcmc"
}