From e2f3e1d24acb38dfdec9d56f798c8d786dfc3d3c Mon Sep 17 00:00:00 2001 From: Paul Sokolovsky Date: Sat, 18 Jan 2014 23:49:06 +0200 Subject: [PATCH] Add socket examples (simple HTTP client and server). --- examples/unix/sock-client.py | 22 ++++++++++++++++++++++ examples/unix/sock-server.py | 28 ++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 examples/unix/sock-client.py create mode 100644 examples/unix/sock-server.py diff --git a/examples/unix/sock-client.py b/examples/unix/sock-client.py new file mode 100644 index 0000000000..d5d5021475 --- /dev/null +++ b/examples/unix/sock-client.py @@ -0,0 +1,22 @@ +mod = rawsocket +s = mod.socket() + +if 1: + ai = mod.getaddrinfo("google.com", 80) + print("Address infos:", ai) + addr = ai[0][4] +else: + # Deprecated way to construct connection address + addr = mod.sockaddr_in() + addr.sin_family = 2 + #addr.sin_addr = (0x0100 << 16) + 0x007f + #addr.sin_addr = (0x7f00 << 16) + 0x0001 + #addr.sin_addr = mod.inet_aton("127.0.0.1") + addr.sin_addr = mod.gethostbyname("google.com") + addr.sin_port = mod.htons(80) + +print("Connect address:", addr) +s.connect(addr) + +s.write("GET / HTTP/1.0\n\n") +print(s.readall()) diff --git a/examples/unix/sock-server.py b/examples/unix/sock-server.py new file mode 100644 index 0000000000..c39a0af21c --- /dev/null +++ b/examples/unix/sock-server.py @@ -0,0 +1,28 @@ +mod = rawsocket +s = mod.socket() + +ai = mod.getaddrinfo("127.0.0.1", 8080) +print("Bind address info:", ai) +addr = ai[0][4] + +s.bind(addr) +s.listen(5) +print("Listening, connect your browser to http://127.0.0.1:8080/") + +counter = 0 +while True: + res = s.accept() + client_s = res[0] + client_addr = res[1] + print("Client address:", client_addr) + print("Client socket:", client_s) + print("Request:") + print(client_s.read(4096)) + #print(client_s.readall()) + client_s.write("""\ +HTTP/1.0 200 OK + +Hello #{} from MicroPython! +""".format(counter)) + client_s.close() + counter += 1