esp-idf/examples/protocols/asio/asio_chat
Ivan Grokhotkov 157247f98f
asio: fix example for compatibility with C++20
Fix deprecated-enum-enum-conversion warning when compiling the
example with C++20
2022-06-17 16:44:17 +02:00
..
main asio: fix example for compatibility with C++20 2022-06-17 16:44:17 +02:00
CMakeLists.txt tools: Increase the minimal supported CMake version to 3.16 2022-06-01 06:35:02 +00:00
example_test.py examples: Asio tests consolidation to use loopback interface 2021-08-31 23:39:18 +04:00
README.md ci: partially enable example build for esp32c2 2022-06-02 14:17:31 +08:00
sdkconfig.ci examples: Asio tests consolidation to use loopback interface 2021-08-31 23:39:18 +04:00
sdkconfig.defaults examples: Asio tests consolidation to use loopback interface 2021-08-31 23:39:18 +04:00

Supported Targets ESP32 ESP32-S2 ESP32-S3 ESP32-C3

Asio chat client and server examples

(See the README.md file in the upper level 'examples' directory for more information about examples.)

The application aims to demonstrate a simple use of Asio library in different modes. In project settings it could be configured to run either a Asio chat server, a Asio chat client, or both.

How to use example

The example is configured by default as an Asio chat client.

Note that the example uses string representation of IP addresses and ports.

You can find the upstream asio chat implementation [here] https://github.com/chriskohlhoff/asio/tree/master/asio/src/examples/cpp11/chat

Asio Client

In the client mode, the example connects to the configured address, sends the message, which was inserted as an input in the terminal, and receives a response.

Asio Server

In the server mode, Asio chat server with a specified port number is created and being polled till a connection request from the client arrives. Chat server echoes a message (received from any client) to all connected clients.

Configure the project

idf.py menuconfig

Set following parameters under Example Configuration Options:

  • Set EXAMPLE_CHAT_SERVER to use the example as an ASIO chat server

    • Configure EXAMPLE_CHAT_SERVER_BIND_PORT to the port number.
  • Set EXAMPLE_CHAT_CLIENT to use the example as an ASIO chat client

    • Configure EXAMPLE_CHAT_CLIENT_CONNECT_ADDRESS to a string representation of the address to connect the client to.
    • Configure EXAMPLE_CHAT_CLIENT_CONNECT_PORT to the port number.
  • Configure Wi-Fi or Ethernet under "Example Connection Configuration" menu. See "Establishing Wi-Fi or Ethernet Connection" section in examples/protocols/README.md for more d etails.

Running the example in server mode

  • Configure the example according "Configure the project" section.
  • Run idf.py -p PORT flash monitor to build and upload the example to your board and connect to it's serial terminal.
  • Wait for the board to connect to WiFi or Ethernet (note the IP address).
  • Connect to the server using multiple clients, for example using any option below.
    • build and run asio chat client on your host machine
    • run chat_client asio example on ESP platform
    • since chat messages consists of ASCII size and message, it is possible to netcat nc IP PORT and type for example 4ABC<CR> to transmit 'ABC\n'

Running the example in client mode

  • Configure the example according "Configure the project" section.
  • Start chat server either on host machine or as another ESP device running chat_server example.
  • Run idf.py -p PORT flash monitor to build and upload the example to your board and connect to it's serial terminal.
  • Wait for the board to connect to WiFi or Ethernet.
  • Receive and send messages to/from other clients on stdin/stdout via serial terminal.

See the README.md file in the upper level 'examples' directory for more information about examples.