samples/net/sockets/socketpair/README.html · samples/net/sockets/socketpair/README.rst 공식 원문 ↗

Zephyr 3.7.0 · Samples · Networking · UNIX domain

Socketpair

Alpha·Bravo·Charlie client thread가 main과 양방향 descriptor pair를 사용해 message를 전달합니다.

Official pathsamples/net/sockets/socketpair/README.html
Source filesamples/net/sockets/socketpair/README.rst
Source versionZephyr 3.7.0
TranslationFull · reviewed

본문 기준: Zephyr 3.7.0 LTS3 · 이후 유지보수 패치는 별도입니다.

Part 1

요약·해설

Zephyr와 POSIX 실행 출력 32줄, descriptor pairing과 scheduling 차이를 보존합니다.

API

socketpair(2)

Clients

3 threads

Portable

Zephyr · POSIX

Part 2

접을 수 있는 영어 원문 전체

영어 원문 전체 펼치기
원문 SHA-256 807B396372E451155E6331027610C94F195850D37DF24F4F978CF21B5D97F2D8
.. zephyr:code-sample:: sockets-socketpair
   :name: Socketpair
   :relevant-api: bsd_sockets

   Implement communication between threads using socket pairs.

Overview
********

The sockets/socketpair sample application for Zephyr demonstrates a
multi-threaded application communicating over pairs of unnamed,
connected UNIX-domain sockets. The pairs of sockets are created with
socketpair(2), as you might have guessed. Such sockets are compatible
with the BSD Sockets API, and therefore the purpose of this sample
is also to reinforce that it is possible to develop a sockets
application portable to both POSIX and Zephyr.

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

Requirements
************

None

Building and Running
********************

Build the Zephyr version of the sockets/echo application like this:

.. zephyr-app-commands::
   :zephyr-app: samples/net/sockets/socketpair
   :board: <board_to_use>
   :goals: build
   :compact:

After the sample starts, several client threads are spawned. Each client
thread sends a fixed number of messages to the server (main).

.. code-block:: console

    *** Booting Zephyr OS build v3.3.0-rc1-97-g432ff20a72e1 ***
    setting-up
    Alpha: socketpair: 4 <=> 3
    Bravo: socketpair: 6 <=> 5
    Charlie: socketpair: 8 <=> 7
    main: read 'Alpha' on fd 4
    main: read 'Bravo' on fd 6
    main: read 'Charlie' on fd 8
    main: read 'Alpha' on fd 4
    main: read 'Bravo' on fd 6
    main: read 'Charlie' on fd 8
    main: read 'Alpha' on fd 4
    main: read 'Bravo' on fd 6
    main: read 'Charlie' on fd 8
    tearing-down
    SUCCESS

Running application on POSIX Host
=================================

The same application source code can be built for a POSIX system, e.g.
Linux.

To build:

.. code-block:: console

    $ make -f Makefile.host

To run:

.. code-block:: console

    ./socketpair_example
    setting-up
    Alpha: socketpair: 3 <=> 4
    Bravo: socketpair: 5 <=> 6
    Charlie: socketpair: 7 <=> 8
    main: read 'Alpha' on fd 3
    main: read 'Bravo' on fd 5
    main: read 'Charlie' on fd 7
    main: read 'Alpha' on fd 3
    main: read 'Alpha' on fd 3
    main: read 'Bravo' on fd 5
    main: read 'Charlie' on fd 7
    main: read 'Bravo' on fd 5
    main: read 'Charlie' on fd 7
    tearing-down
    SUCCESS

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

Part 3

한국어 전문 번역

개요

Zephyr의 sockets/socketpair sample application은 이름이 없고 서로 연결된 UNIX-domain socket pair를 통해 통신하는 multi-threaded application을 보여 줍니다.

예상할 수 있듯이 socket pair는 socketpair(2)로 만듭니다. 이 socket은 BSD Sockets API와 호환되므로 이 sample은 POSIX와 Zephyr 양쪽에 이식 가능한 socket application을 개발할 수 있음을 다시 보여 줍니다.

이 sample application의 source code는 samples/net/sockets/socketpair에서 찾을 수 있습니다.

요구 사항

없음

빌드 및 실행

Zephyr version의 sockets/socketpair application은 다음과 같이 build합니다. 공식 원문은 설명 문장에서 sockets/echo라고 적지만 실제 build path는 sockets/socketpair입니다.

west build -b <board_to_use> samples/net/sockets/socketpair

Sample이 시작되면 여러 client thread를 생성합니다. 각 client thread는 server 역할을 하는 main thread에 정해진 수의 message를 보냅니다.

*** Booting Zephyr OS build v3.3.0-rc1-97-g432ff20a72e1 ***
setting-up
Alpha: socketpair: 4 <=> 3
Bravo: socketpair: 6 <=> 5
Charlie: socketpair: 8 <=> 7
main: read 'Alpha' on fd 4
main: read 'Bravo' on fd 6
main: read 'Charlie' on fd 8
main: read 'Alpha' on fd 4
main: read 'Bravo' on fd 6
main: read 'Charlie' on fd 8
main: read 'Alpha' on fd 4
main: read 'Bravo' on fd 6
main: read 'Charlie' on fd 8
tearing-down
SUCCESS

POSIX Host에서 application 실행

동일한 application source code를 Linux 같은 POSIX system용으로 build할 수 있습니다.

Build 방법:

$ make -f Makefile.host

실행 방법:

./socketpair_example
setting-up
Alpha: socketpair: 3 <=> 4
Bravo: socketpair: 5 <=> 6
Charlie: socketpair: 7 <=> 8
main: read 'Alpha' on fd 3
main: read 'Bravo' on fd 5
main: read 'Charlie' on fd 7
main: read 'Alpha' on fd 3
main: read 'Alpha' on fd 3
main: read 'Bravo' on fd 5
main: read 'Charlie' on fd 7
main: read 'Bravo' on fd 5
main: read 'Charlie' on fd 7
tearing-down
SUCCESS

출력에서 볼 수 있듯이 application 동작은 Zephyr version과 거의 같습니다. Thread scheduling에 따라 message가 관찰되는 순서는 조금 달라질 수 있지만 각 client가 main에 고정된 수의 message를 보내고 성공적으로 종료하는 흐름은 같습니다.

Source

출처

영어 원문에는 문단, 문서 지시문, 표, 코드, 코드 심벌, 경로를 그대로 보존했습니다.