1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
RIOT/examples/posix_select/README.md

84 lines
2.5 KiB
Markdown
Raw Normal View History

2019-12-17 17:02:20 +01:00
examples/posix_sockets
======================
This application is a showcase for RIOT's POSIX select support. To
keep things simple this application has only one-hop support and
no routing capabilities.
Usage
=====
Build, flash and start the application:
```sh
export BOARD=your_board
make
make flash
make term
```
The `term` make target starts a terminal emulator for your board. It
connects to a default port so you can interact with the shell, usually
that is `/dev/ttyUSB0`. If your port is named differently, the
`PORT=/dev/yourport` (not to be confused with the UDP port) variable can
be used to override this.
Example output
==============
The application starts 4 UDP servers on a selection of different ports that wait
for input simultaneously:
```
2019-12-17 16:36:45,559 # RIOT select example application
2019-12-17 16:36:45,561 # Started UDP server at [fe80::14ac:fb65:106b:1115]:1350
2019-12-17 16:36:45,562 # Started UDP server at [fe80::14ac:fb65:106b:1115]:4973
2019-12-17 16:36:45,562 # Started UDP server at [fe80::14ac:fb65:106b:1115]:6717
2019-12-17 16:36:45,562 # Started UDP server at [fe80::14ac:fb65:106b:1115]:9673
```
If you do not see any output you might need to reset the node. Either, by
pressing the hardware reset button on the board or by running
```sh
make reset
```
There is no shell in this application. You can use the [`posix_sockets` example]
from another board to send a packet to the node:
```
> udp send fe80::14ac:fb65:106b:1115 6717 "Hello World!"
2019-12-17 16:47:01,789 # udp send fe80::14ac:fb65:106b:1115%6 6717 "Hello World!"
2019-12-17 16:47:01,795 # Success: send 12 byte to fe80::14ac:fb65:106b:1115:6717
```
On the board with the `posix_select` example you will see then something like
this:
```
2019-12-17 16:47:01,796 # Received data from [fe80::589d:9386:2208:6579]:192:
2019-12-17 16:47:01,796 # Hello World!
```
Alternatively, with `native` or if your host also can connect to the board, you
can also use [`netcat`][netcat] to send multiple packets simultaneously. E.g.
when the node is connected to the host via the interface `tapbr0`:
```sh
echo -ne "Hello World!" | nc -6u "fe80::78b9:ecff:fe96:8279%tapbr0" 4973 & \
echo -ne "Hello Space!" | nc -6u "fe80::78b9:ecff:fe96:8279%tapbr0" 1350
killall nc
```
This is what the `native` node will then show:
```
Received data from [fe80::3ccc:8dff:fe9f:9991]:14279:
Hello World!
Received data from [fe80::3ccc:8dff:fe9f:9991]:58817:
Hello Space!
```
[`posix_sockets` example]: ../posix_sockets
[netcat]: https://www.unix.com/man-page/Linux/1/netcat/