xref: /aosp_15_r20/external/nanopb-c/examples/network_server/README.txt (revision c8d645cafcee3f91213d30caa0fe303887010b9b)
1*c8d645caSAndroid Build Coastguard WorkerNanopb example "network_server"
2*c8d645caSAndroid Build Coastguard Worker===============================
3*c8d645caSAndroid Build Coastguard Worker
4*c8d645caSAndroid Build Coastguard WorkerThis example demonstrates the use of nanopb to communicate over network
5*c8d645caSAndroid Build Coastguard Workerconnections. It consists of a server that sends file listings, and of
6*c8d645caSAndroid Build Coastguard Workera client that requests the file list from the server.
7*c8d645caSAndroid Build Coastguard Worker
8*c8d645caSAndroid Build Coastguard WorkerExample usage
9*c8d645caSAndroid Build Coastguard Worker-------------
10*c8d645caSAndroid Build Coastguard Worker
11*c8d645caSAndroid Build Coastguard Workeruser@host:~/nanopb/examples/network_server$ make        # Build the example
12*c8d645caSAndroid Build Coastguard Workerprotoc -ofileproto.pb fileproto.proto
13*c8d645caSAndroid Build Coastguard Workerpython ../../generator/nanopb_generator.py fileproto.pb
14*c8d645caSAndroid Build Coastguard WorkerWriting to fileproto.pb.h and fileproto.pb.c
15*c8d645caSAndroid Build Coastguard Workercc -ansi -Wall -Werror -I .. -g -O0 -I../.. -o server server.c
16*c8d645caSAndroid Build Coastguard Worker    ../../pb_decode.c ../../pb_encode.c fileproto.pb.c common.c
17*c8d645caSAndroid Build Coastguard Workercc -ansi -Wall -Werror -I .. -g -O0 -I../.. -o client client.c
18*c8d645caSAndroid Build Coastguard Worker    ../../pb_decode.c ../../pb_encode.c fileproto.pb.c common.c
19*c8d645caSAndroid Build Coastguard Worker
20*c8d645caSAndroid Build Coastguard Workeruser@host:~/nanopb/examples/network_server$ ./server &  # Start the server on background
21*c8d645caSAndroid Build Coastguard Worker[1] 24462
22*c8d645caSAndroid Build Coastguard Worker
23*c8d645caSAndroid Build Coastguard Workerpetteri@oddish:~/nanopb/examples/network_server$ ./client /bin  # Request the server to list /bin
24*c8d645caSAndroid Build Coastguard WorkerGot connection.
25*c8d645caSAndroid Build Coastguard WorkerListing directory: /bin
26*c8d645caSAndroid Build Coastguard Worker1327119    bzdiff
27*c8d645caSAndroid Build Coastguard Worker1327126    bzless
28*c8d645caSAndroid Build Coastguard Worker1327147    ps
29*c8d645caSAndroid Build Coastguard Worker1327178    ntfsmove
30*c8d645caSAndroid Build Coastguard Worker1327271    mv
31*c8d645caSAndroid Build Coastguard Worker1327187    mount
32*c8d645caSAndroid Build Coastguard Worker1327259    false
33*c8d645caSAndroid Build Coastguard Worker1327266    tempfile
34*c8d645caSAndroid Build Coastguard Worker1327285    zfgrep
35*c8d645caSAndroid Build Coastguard Worker1327165    gzexe
36*c8d645caSAndroid Build Coastguard Worker1327204    nc.openbsd
37*c8d645caSAndroid Build Coastguard Worker1327260    uname
38*c8d645caSAndroid Build Coastguard Worker
39*c8d645caSAndroid Build Coastguard Worker
40*c8d645caSAndroid Build Coastguard WorkerDetails of implementation
41*c8d645caSAndroid Build Coastguard Worker-------------------------
42*c8d645caSAndroid Build Coastguard Workerfileproto.proto contains the portable Google Protocol Buffers protocol definition.
43*c8d645caSAndroid Build Coastguard WorkerIt could be used as-is to implement a server or a client in any other language, for
44*c8d645caSAndroid Build Coastguard Workerexample Python or Java.
45*c8d645caSAndroid Build Coastguard Worker
46*c8d645caSAndroid Build Coastguard Workerfileproto.options contains the nanopb-specific options for the protocol file. This
47*c8d645caSAndroid Build Coastguard Workersets the amount of space allocated for file names when decoding messages.
48*c8d645caSAndroid Build Coastguard Worker
49*c8d645caSAndroid Build Coastguard Workercommon.c/h contains functions that allow nanopb to read and write directly from
50*c8d645caSAndroid Build Coastguard Workernetwork socket. This way there is no need to allocate a separate buffer to store
51*c8d645caSAndroid Build Coastguard Workerthe message.
52*c8d645caSAndroid Build Coastguard Worker
53*c8d645caSAndroid Build Coastguard Workerserver.c contains the code to open a listening socket, to respond to clients and
54*c8d645caSAndroid Build Coastguard Workerto list directory contents.
55*c8d645caSAndroid Build Coastguard Worker
56*c8d645caSAndroid Build Coastguard Workerclient.c contains the code to connect to a server, to send a request and to print
57*c8d645caSAndroid Build Coastguard Workerthe response message.
58*c8d645caSAndroid Build Coastguard Worker
59*c8d645caSAndroid Build Coastguard WorkerThe code is implemented using the POSIX socket api, but it should be easy enough
60*c8d645caSAndroid Build Coastguard Workerto port into any other socket api, such as lwip.
61