zephyr/samples/net/sockets/echo_client
Andrei Gansari f37ec3b0af samples: net: some samples min_flash = 140k
In order to prevent failing tests on i.MX RT the following samples were
limited to a minimum 140k of flash: http_client, http_server,
socket/echo_client and sockets/echo_server.

Signed-off-by: Andrei Gansari <andrei.gansari@nxp.com>
2018-11-20 09:54:25 -06:00
..
src samples: net: sockets: Convert to use new logging 2018-10-04 14:13:57 +03:00
CMakeLists.txt samples, tests: Use semi-accurate project names 2018-10-27 21:31:25 -04:00
Kconfig Kconfig: Remove redundant $(ZEPHYR_BASE) from 'source's 2018-10-10 11:28:27 -05:00
overlay-tls.conf samples: net: Add DTLS support to socket echo_client/echo_server 2018-08-13 15:24:34 +03:00
overlay-vlan.conf samples: net: sockets: echo-client: Add VLAN support 2018-09-20 11:21:22 +03:00
prj.conf samples: net: sockets: Convert to use new logging 2018-10-04 14:13:57 +03:00
README.rst samples: net: sockets: Update docs with TLS information 2018-09-26 18:13:34 +03:00
sample.yaml samples: net: some samples min_flash = 140k 2018-11-20 09:54:25 -06:00

.. _sockets-echo-client-sample:

Socket Echo Client
##################

Overview
********

The echo-client sample application for Zephyr implements a UDP/TCP client
that will send IPv4 or IPv6 packets, wait for the data to be sent back,
and then verify it matches the data that was sent.

This sample is a port of the :ref:`echo-client-sample`. It has been rewritten
to use socket API instead of native net-app API.

The source code for this sample application can be found at:
:file:`samples/net/sockets/echo_client`.

Requirements
************

- :ref:`networking_with_qemu`

Building and Running
********************

There are multiple ways to use this application. One of the most common
usage scenario is to run echo-client application inside QEMU. This is
described in :ref:`networking_with_qemu`.

Build echo-client sample application like this:

.. zephyr-app-commands::
   :zephyr-app: samples/net/sockets/echo_client
   :board: <board_to_use>
   :goals: build
   :compact:

``board_to_use`` defaults to ``qemu_x86``. In this case, you can run the
application in QEMU using ``make run``. If you used another BOARD, you
will need to consult its documentation for application deployment
instructions. You can read about Zephyr support for specific boards in
the documentation at :ref:`boards`.

Enabling TLS support
=================================

Enable TLS support in the sample by building the project with the
``overlay-tls.conf`` overlay file enabled, for example, using these commands:

.. zephyr-app-commands::
   :zephyr-app: samples/net/sockets/echo_client
   :board: qemu_x86
   :conf: "prj.conf overlay-tls.conf"
   :goals: build
   :compact:

An alternative way is to specify ``-DOVERLAY_CONFIG=overlay-tls.conf`` when
running cmake.

The certificate and private key used by the sample can be found in the sample's
``src`` directory. The default certificates used by Socket Echo Client and
:ref:`sockets-echo-server-sample` enable establishing a secure connection
between the samples.


Running echo-server in Linux Host
=================================

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

To use QEMU for testing, follow the :ref:`networking_with_qemu` guide.

In a terminal window:

.. code-block:: console

    $ sudo ./echo-server -i tap0

Run echo-client application in QEMU:

.. zephyr-app-commands::
   :zephyr-app: samples/net/sockets/echo_client
   :host-os: unix
   :board: qemu_x86
   :goals: run
   :compact:

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

You can verify TLS communication with a Linux host as well. See
https://github.com/zephyrproject-rtos/net-tools documentation for information
on how to test TLS with Linux host samples.

See the :ref:`sockets-echo-server-sample` documentation for an alternate
way of running, with the echo-client on the Linux host and the echo-server
in QEMU.