Home | History | Annotate | only in /external/nanopb-c/examples/network_server
Up to higher level directory
NameDateSize
client.c21-Aug-20182.7K
common.c21-Aug-2018921
common.h21-Aug-2018175
fileproto.options21-Aug-2018520
fileproto.proto21-Aug-2018403
Makefile21-Aug-2018356
README.txt21-Aug-20182.1K
server.c21-Aug-20183.2K

README.txt

      1 Nanopb example "network_server"
      2 ===============================
      3 
      4 This example demonstrates the use of nanopb to communicate over network
      5 connections. It consists of a server that sends file listings, and of
      6 a client that requests the file list from the server.
      7 
      8 Example usage
      9 -------------
     10 
     11 user@host:~/nanopb/examples/network_server$ make        # Build the example
     12 protoc -ofileproto.pb fileproto.proto
     13 python ../../generator/nanopb_generator.py fileproto.pb
     14 Writing to fileproto.pb.h and fileproto.pb.c
     15 cc -ansi -Wall -Werror -I .. -g -O0 -I../.. -o server server.c
     16     ../../pb_decode.c ../../pb_encode.c fileproto.pb.c common.c
     17 cc -ansi -Wall -Werror -I .. -g -O0 -I../.. -o client client.c
     18     ../../pb_decode.c ../../pb_encode.c fileproto.pb.c common.c
     19 
     20 user@host:~/nanopb/examples/network_server$ ./server &  # Start the server on background
     21 [1] 24462
     22 
     23 petteri@oddish:~/nanopb/examples/network_server$ ./client /bin  # Request the server to list /bin
     24 Got connection.
     25 Listing directory: /bin
     26 1327119    bzdiff
     27 1327126    bzless
     28 1327147    ps
     29 1327178    ntfsmove
     30 1327271    mv
     31 1327187    mount
     32 1327259    false
     33 1327266    tempfile
     34 1327285    zfgrep
     35 1327165    gzexe
     36 1327204    nc.openbsd
     37 1327260    uname
     38 
     39 
     40 Details of implementation
     41 -------------------------
     42 fileproto.proto contains the portable Google Protocol Buffers protocol definition.
     43 It could be used as-is to implement a server or a client in any other language, for
     44 example Python or Java.
     45 
     46 fileproto.options contains the nanopb-specific options for the protocol file. This
     47 sets the amount of space allocated for file names when decoding messages.
     48 
     49 common.c/h contains functions that allow nanopb to read and write directly from
     50 network socket. This way there is no need to allocate a separate buffer to store
     51 the message.
     52 
     53 server.c contains the code to open a listening socket, to respond to clients and
     54 to list directory contents.
     55 
     56 client.c contains the code to connect to a server, to send a request and to print
     57 the response message.
     58 
     59 The code is implemented using the POSIX socket api, but it should be easy enough
     60 to port into any other socket api, such as lwip.
     61