Echo Server

Overview

The echo-server sample application for Zephyr implements a UDP/TCP server that complements the echo-client sample application: the echo-server listens for incoming IPv4 or IPv6 packets (sent by the echo client) and simply sends them back.

The source code for this sample application can be found at: samples/net/echo_server.

Requirements

Building and Running

There are multiple ways to use this application. One of the most common usage scenario is to run echo-server application inside QEMU. This is described in Networking with QEMU.

There are configuration files for different boards and setups in the echo-server directory:

  • prj.conf Generic config file, normally you should use this.
  • overlay-frdm_k64f_cc2520.conf This overlay config enables support for IEEE 802.15.4 CC2520 and frdm_k64f
  • overlay-frdm_k64f_mcr20a.conf This overlay config enables support for IEEE 802.15.4 mcr20a and frdm_k64f
  • overlay-ot.conf This overlay config enables support for OpenThread
  • overlay-enc28j60.conf This overlay config enables support for enc28j60 ethernet board. This add-on board can be used for example with Arduino 101 board.
  • overlay-cc2520.conf This overlay config enables support for IEEE 802.15.4 cc2520 chip.
  • overlay-bt.conf This overlay config enables support for Bluetooth IPSP connectivity.
  • overlay-qemu_802154.conf This overlay config enables support for two QEMU’s when simulating IEEE 802.15.4 network that are connected together.
  • overlay-tls.conf This overlay config enables support for TLS.
  • overlay-netusb.conf This overlay config enables support for Ethernet over USB setup with supported boards. The setup is described in USB Device Networking

Build echo-server sample application like this:

# On Linux/macOS
cd $ZEPHYR_BASE/samples/net/echo_server
mkdir build && cd build
# On Windows
cd %ZEPHYR_BASE%\samples\net\echo_server
mkdir build & cd build
cmake -GNinja -DBOARD=<board to use> -DCONF_FILE=<config file to use> ..
ninja

Example building for the FRDM-K64F with TI CC2520 support:

cd $ZEPHYR_BASE/samples/net/echo_server
mkdir build && cd build
cmake -GNinja -DBOARD=frdm_k64f -DCONF_FILE="prj.conf overlay-frdm_k64f_cc2520.conf" ..
ninja run

Make can select the default configuration file based on the BOARD you’ve specified automatically so you might not always need to mention it.

Running echo-client in Linux Host

There is one useful testing scenario that can be used with Linux host. Here echo-server is run in QEMU and echo-client is run in Linux host.

To use QEMU for testing, follow the Networking with QEMU guide.

Run echo-server application in QEMU:

cd $ZEPHYR_BASE/samples/net/echo_server
mkdir build && cd build
cmake -GNinja -DBOARD=qemu_x86 ..
ninja run

In a terminal window:

$ sudo ./echo-client -i tap0 2001:db8::1

Note that echo-server must be running in QEMU before you start the echo-client application in host terminal window.