.. _sockets-dumb-http-server-sample:

Socket Dumb HTTP Server
#######################

Overview
********

The sockets/dumb_http_server sample application for Zephyr implements a
skeleton HTTP server using a BSD Sockets compatible 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, this HTTP server example is
kept very minimal and does not really parse an incoming HTTP request,
just reads and discards it, and always serve a single static page. Even
with such simplification, it is useful as an example of a socket
application which can be accessed via a convention web browser, or to
perform performance/regression testing using existing HTTP testing
tools.

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

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/dumb_http_server
    $ make pristine
    $ make BOARD=<board_to_use>

``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 8080.
The easiest way to connect is by opening a following URL in a web
browser: http://192.0.2.1:8080/ . You should see a page with content
"Plain-text example.". Alternatively, a tool like ``curl`` can be used:

.. code-block:: console

    $ curl http://192.0.2.1:8080/
    Plain-text example.

Finally, you can run an HTTP profiling/load tool like Apache Bench
(``ab``) against the server:

    $ ab -n10 http://192.0.2.1:8080/

``-n`` parameter specified the number of HTTP requests to issue against
a server.

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 the 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_dumb_http

To test, connect to http://127.0.0.1:8080/ , and follow the steps in the
previous section.

As can be seen, the behavior of the application is the same as the Zephyr
version.
