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