diff --git a/samples/net/sockets/echo/README.rst b/samples/net/sockets/echo/README.rst new file mode 100644 index 00000000000..62a994f7d53 --- /dev/null +++ b/samples/net/sockets/echo/README.rst @@ -0,0 +1,78 @@ +.. _sockets-echo-sample: + +Socket Echo Server +################## + +Overview +******** + +The sockets/echo sample application for Zephyr implements an IPv4 TCP echo +server using a BSD Sockets like API. The purpose of this sample is to show +how it's possible to develop a sockets application portable to both POSIX +and Zephyr. As such, it is kept minimal and supports only IPv4 and TCP. + +The source code for this sample application can be found at: +:file:`samples/net/sockets/echo`. + +Requirements +************ + +- :ref:`networking_with_qemu` +- or, a board with hardware networking + +Building and Running +******************** + +Build the Zephyr version of the sockets/echo application like this: + +.. code-block:: console + + $ cd $ZEPHYR_BASE/samples/net/sockets/echo + $ make pristine + $ make BOARD= + +``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`. + +After the sample starts, it expects connections at 192.0.2.1, 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 thus can serve only one client connection at time. After the +current client disconnects, the next connection can proceed. + +Running application on POSIX Host +================================= + +The same application source code can be built for a POSIX system, e.g. +Linux. (Note: if you look at the source, you will see that code is the +same except the header files are different for Zephyr vs POSIX.) + +To build for a host POSIX OS: + +.. code-block:: console + + $ make -f Makefile.posix + +To run: + +.. code-block:: console + + $ ./socket_echo + +To test: + +.. code-block:: console + + $ telnet 127.0.0.1 4242 + +As can be seen, the behavior of the application is the same as the Zephyr +version. diff --git a/samples/net/sockets/echo_async/README.rst b/samples/net/sockets/echo_async/README.rst new file mode 100644 index 00000000000..0b1a6a1cf79 --- /dev/null +++ b/samples/net/sockets/echo_async/README.rst @@ -0,0 +1,83 @@ +.. _async-sockets-echo-sample: + +Asynchronous Socket Echo Server +############################### + +Overview +******** + +The sockets/echo-async sample application for Zephyr implements an +asyncronous IPv4 TCP echo server using a BSD Sockets like API with +non-blocking sockets and a ``poll()`` call. This is an extension of +the :ref:`sockets-echo-sample` sample. The purpose of this sample is +still to show how it's possible to develop a sockets application portable +to both POSIX and Zephyr. As such, it is kept minimal and supports only +IPv4 and TCP. + +The source code for this sample application can be found at: +:file:`samples/net/sockets/echo_async`. + +Requirements +************ + +- :ref:`networking_with_qemu` +- or, a board with hardware networking + +Building and Running +******************** + +Build the Zephyr version of the sockets/echo_async application like this: + +.. code-block:: console + + $ cd $ZEPHYR_BASE/samples/net/sockets/echo_async + $ make pristine + $ make BOARD= + +``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`. + +After the sample starts, it expects connections at 192.0.2.1, 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. Unlike the above-mentioned :ref:`sockets-echo-sample`, this application +supports multiple concurrent client connections. You can open +another terminal window and run the same telnet command as above. +The sample supports up to three connected clients, but this can be adjusted +by changing ``NUM_FDS`` defined in the source code. + +Running application on POSIX Host +================================= + +The same application source code can be built for a POSIX system, e.g. +Linux. (Note: if you look at the source, you will see that code is +the same except the header files are different for Zephyr vs POSIX.) + +To build for a host POSIX OS: + +.. code-block:: console + + $ make -f Makefile.posix + +To run: + +.. code-block:: console + + $ ./socket_echo + +To test: + +.. code-block:: console + + $ telnet 127.0.0.1 4242 + +As can be seen, the behavior of the application is the same as the Zephyr +version.