| .. zephyr:code-sample:: tftp-client |
| :name: TFTP client |
| :relevant-api: tftp_client |
| |
| Use the TFTP client library to get/put files from/to a TFTP server. |
| |
| Overview |
| ******** |
| |
| Trivial File Transfer Protocol (TFTP) is a simple lockstep File Transfer Protocol |
| based on UDP, and is designed to get a file from or put a file onto a remote host. |
| |
| This TFTP client sample application for Zephyr implements the TFTP client library |
| and establishes a connection to a TFTP server on standard port 69. |
| |
| The source code for this sample application can be found at: |
| :zephyr_file:`samples/net/tftp_client`. |
| |
| Requirements |
| ************ |
| |
| - :ref:`networking_with_eth_qemu`, :ref:`networking_with_qemu` or :ref:`networking_with_native_sim` |
| - Linux machine |
| |
| Building and Running |
| ******************** |
| |
| There are configuration files for various setups in the |
| samples/net/tftp_client directory: |
| |
| - :file:`prj.conf` |
| This is the standard default config. |
| |
| Build the tftp-client sample application like this: |
| |
| .. zephyr-app-commands:: |
| :zephyr-app: samples/net/tftp_client |
| :board: <board to use> |
| :conf: <config file to use> |
| :goals: build |
| :compact: |
| |
| The easiest way to setup this sample application is to build and run it |
| as a native_sim application or as a QEMU target using the default configuration :file:`prj.conf`. |
| This requires a small amount of setup described in :ref:`networking_with_eth_qemu`, :ref:`networking_with_qemu` and :ref:`networking_with_native_sim`. |
| |
| Build the tftp-client sample application for :ref:`native_sim <native_sim>` like this: |
| |
| .. zephyr-app-commands:: |
| :zephyr-app: samples/net/tftp_client |
| :host-os: unix |
| :board: native_sim |
| :goals: run |
| :compact: |
| |
| Download and run a TFTP server (like TFTPd), then create file1.bin (with data) and newfile.bin. |
| |
| Please note that default IP server address is 192.0.2.2 and default port is 69. |
| To specify an IP server address and/or port, change these configurations in ``prj.conf``: |
| |
| .. code-block:: cfg |
| |
| CONFIG_TFTP_APP_SERVER="10.0.0.10" |
| CONFIG_TFTP_APP_PORT="70" |
| |
| To connect to server using hostname, enable DNS resolver by changing these two |
| configurations in ``prj.conf``: |
| |
| .. code-block:: cfg |
| |
| CONFIG_DNS_RESOLVER=y |
| CONFIG_TFTP_APP_SERVER="my-tftp-server.org" |
| |
| Sample output |
| ================================== |
| |
| This sample can be run on :ref:`native_sim<native_sim>` while running a TFTP server on the host |
| machine. |
| |
| Launch :command:`net-setup.sh` in net-tools: |
| |
| .. code-block:: bash |
| |
| net-setup.sh |
| |
| .. code-block:: bash |
| |
| <inf> net_config: Initializing network |
| <inf> net_config: IPv4 address: 192.0.2.1 |
| <inf> net_tftp_client_app: Run TFTP client |
| <inf> net_tftp_client_app: Received data: |
| 74 65 73 74 74 66 74 70 66 6f 72 7a 65 70 68 79 |testtftp forzephy |
| 72 0a |r. |
| <inf> net_tftp_client_app: TFTP client get done |
| <inf> net_tftp_client_app: TFTP client put done |