52 lines
1.7 KiB
ReStructuredText
52 lines
1.7 KiB
ReStructuredText
.. zephyr:code-sample:: sockets-service-echo
|
|
:name: Echo server (service)
|
|
:relevant-api: bsd_sockets
|
|
|
|
Implements a simple IPv4/IPv6 TCP echo server using BSD sockets and socket service API.
|
|
|
|
Overview
|
|
********
|
|
|
|
The sockets/echo_service sample application for Zephyr implements a TCP echo
|
|
server supporting both IPv4 and IPv6 and using a BSD Sockets compatible API.
|
|
|
|
The purpose of this sample is to show how to use socket service API.
|
|
The socket service is a concept where many blocking sockets can be listened by
|
|
one thread, and which can then trigger a callback if there is activity in the set
|
|
of sockets. This saves memory as only one thread needs to be created in the
|
|
system.
|
|
|
|
The application supports IPv4 and IPv6, and both UDP and TCP are also supported.
|
|
The source code for this sample application can be found at:
|
|
:zephyr_file:`samples/net/sockets/echo_service`.
|
|
|
|
Requirements
|
|
************
|
|
|
|
- :ref:`networking_with_host`
|
|
- or, a board with hardware networking
|
|
|
|
Building and Running
|
|
********************
|
|
|
|
Build the Zephyr version of the sockets/echo_service application like this:
|
|
|
|
.. zephyr-app-commands::
|
|
:zephyr-app: samples/net/sockets/echo_service
|
|
:board: <board_to_use>
|
|
:goals: build
|
|
:compact:
|
|
|
|
After the sample starts, it expects connections at 192.0.2.1, or 2001:db8::1
|
|
and port 4242.
|
|
The easiest way to connect is:
|
|
|
|
.. code-block:: console
|
|
|
|
$ telnet 192.0.2.1 4242
|
|
|
|
After a connection is made, the application will echo back any line sent
|
|
to it. The application implements a single-threaded server using blocking
|
|
sockets, and currently is only implemented to serve only one client connection
|
|
at time. After the current client disconnects, the next connection can proceed.
|