xref: /aosp_15_r20/external/libwebsockets/minimal-examples/raw/minimal-raw-netcat/README.md (revision 1c60b9aca93fdbc9b5f19b2d2194c91294b22281)
1*1c60b9acSAndroid Build Coastguard Worker# lws minimal raw netcat
2*1c60b9acSAndroid Build Coastguard Worker
3*1c60b9acSAndroid Build Coastguard WorkerThis example shows to to create a "netcat" that copies its stdin to
4*1c60b9acSAndroid Build Coastguard Workera remote socket and prints what is returned in stdout.
5*1c60b9acSAndroid Build Coastguard Worker
6*1c60b9acSAndroid Build Coastguard WorkerIt has some advantage over the real netcat, it will wait 1s after stdin closes
7*1c60b9acSAndroid Build Coastguard Workerto print results that are in flight.
8*1c60b9acSAndroid Build Coastguard Worker
9*1c60b9acSAndroid Build Coastguard Worker## build
10*1c60b9acSAndroid Build Coastguard Worker
11*1c60b9acSAndroid Build Coastguard Worker```
12*1c60b9acSAndroid Build Coastguard Worker $ cmake . && make
13*1c60b9acSAndroid Build Coastguard Worker```
14*1c60b9acSAndroid Build Coastguard Worker
15*1c60b9acSAndroid Build Coastguard Worker## usage
16*1c60b9acSAndroid Build Coastguard Worker
17*1c60b9acSAndroid Build Coastguard Worker```
18*1c60b9acSAndroid Build Coastguard Worker $ echo -e -n "GET / http/1.1\r\n\r\n"| ./lws-minimal-raw-netcat
19*1c60b9acSAndroid Build Coastguard Worker[2018/05/02 08:53:53:2665] USER: LWS minimal raw netcat [--server ip] [--port port]
20*1c60b9acSAndroid Build Coastguard Worker[2018/05/02 08:53:53:2667] NOTICE: Creating Vhost 'default' (no listener), 1 protocols, IPv6 off
21*1c60b9acSAndroid Build Coastguard Worker[2018/05/02 08:53:53:2703] USER: Starting connect...
22*1c60b9acSAndroid Build Coastguard Worker[2018/05/02 08:53:53:5644] USER: Connected to libwebsockets.org:80...
23*1c60b9acSAndroid Build Coastguard Worker[2018/05/02 08:53:53:5645] USER: LWS_CALLBACK_RAW_ADOPT
24*1c60b9acSAndroid Build Coastguard Worker[2018/05/02 08:53:53:5645] USER: LWS_CALLBACK_RAW_ADOPT_FILE
25*1c60b9acSAndroid Build Coastguard Worker[2018/05/02 08:53:53:5646] USER: LWS_CALLBACK_RAW_RX_FILE
26*1c60b9acSAndroid Build Coastguard Worker[2018/05/02 08:53:53:5646] USER: LWS_CALLBACK_RAW_CLOSE_FILE
27*1c60b9acSAndroid Build Coastguard Worker[2018/05/02 08:53:53:8600] USER: LWS_CALLBACK_RAW_RX (186)
28*1c60b9acSAndroid Build Coastguard WorkerHTTP/1.1 301 Redirect
29*1c60b9acSAndroid Build Coastguard Workerserver: lwsws
30*1c60b9acSAndroid Build Coastguard WorkerStrict-Transport-Security: max-age=15768000 ; includeSubDomains
31*1c60b9acSAndroid Build Coastguard Workerlocation: https://libwebsockets.org
32*1c60b9acSAndroid Build Coastguard Workercontent-type: text/html
33*1c60b9acSAndroid Build Coastguard Workercontent-length: 0
34*1c60b9acSAndroid Build Coastguard Worker
35*1c60b9acSAndroid Build Coastguard Worker```
36*1c60b9acSAndroid Build Coastguard Worker
37*1c60b9acSAndroid Build Coastguard WorkerNote the example does everything itself, after 5s idle the remote server closes the connection
38*1c60b9acSAndroid Build Coastguard Workerafter which the example continues until you ^C it.
39