diff options
Diffstat (limited to 'examples/network')
| -rw-r--r-- | examples/network/http_client.py | 30 | ||||
| -rw-r--r-- | examples/network/http_client_ssl.py | 38 | ||||
| -rw-r--r-- | examples/network/http_server.py | 64 | ||||
| -rw-r--r-- | examples/network/http_server_simplistic.py | 40 | ||||
| -rw-r--r-- | examples/network/http_server_simplistic_commented.py | 76 | ||||
| -rw-r--r-- | examples/network/http_server_ssl.py | 64 |
6 files changed, 0 insertions, 312 deletions
diff --git a/examples/network/http_client.py b/examples/network/http_client.py deleted file mode 100644 index 0791c8066..000000000 --- a/examples/network/http_client.py +++ /dev/null @@ -1,30 +0,0 @@ -try: - import usocket as socket -except: - import socket - - -def main(use_stream=False): - s = socket.socket() - - ai = socket.getaddrinfo("google.com", 80) - print("Address infos:", ai) - addr = ai[0][-1] - - print("Connect address:", addr) - s.connect(addr) - - if use_stream: - # MicroPython socket objects support stream (aka file) interface - # directly, but the line below is needed for CPython. - s = s.makefile("rwb", 0) - s.write(b"GET / HTTP/1.0\r\n\r\n") - print(s.read()) - else: - s.send(b"GET / HTTP/1.0\r\n\r\n") - print(s.recv(4096)) - - s.close() - - -main() diff --git a/examples/network/http_client_ssl.py b/examples/network/http_client_ssl.py deleted file mode 100644 index 83f685fdf..000000000 --- a/examples/network/http_client_ssl.py +++ /dev/null @@ -1,38 +0,0 @@ -try: - import usocket as _socket -except: - import _socket -try: - import ussl as ssl -except: - import ssl - - -def main(use_stream=True): - s = _socket.socket() - - ai = _socket.getaddrinfo("google.com", 443) - print("Address infos:", ai) - addr = ai[0][-1] - - print("Connect address:", addr) - s.connect(addr) - - s = ssl.wrap_socket(s) - print(s) - - if use_stream: - # Both CPython and MicroPython SSLSocket objects support read() and - # write() methods. - s.write(b"GET / HTTP/1.0\r\n\r\n") - print(s.read(4096)) - else: - # MicroPython SSLSocket objects implement only stream interface, not - # socket interface - s.send(b"GET / HTTP/1.0\r\n\r\n") - print(s.recv(4096)) - - s.close() - - -main() diff --git a/examples/network/http_server.py b/examples/network/http_server.py deleted file mode 100644 index e3a66e828..000000000 --- a/examples/network/http_server.py +++ /dev/null @@ -1,64 +0,0 @@ -try: - import usocket as socket -except: - import socket - - -CONTENT = b"""\ -HTTP/1.0 200 OK - -Hello #%d from MicroPython! -""" - -def main(micropython_optimize=False): - s = socket.socket() - - # Binding to all interfaces - server will be accessible to other hosts! - ai = socket.getaddrinfo("0.0.0.0", 8080) - print("Bind address info:", ai) - addr = ai[0][-1] - - s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) - s.bind(addr) - s.listen(5) - print("Listening, connect your browser to http://<this_host>:8080/") - - counter = 0 - while True: - res = s.accept() - client_sock = res[0] - client_addr = res[1] - print("Client address:", client_addr) - print("Client socket:", client_sock) - - if not micropython_optimize: - # To read line-oriented protocol (like HTTP) from a socket (and - # avoid short read problem), it must be wrapped in a stream (aka - # file-like) object. That's how you do it in CPython: - client_stream = client_sock.makefile("rwb") - else: - # .. but MicroPython socket objects support stream interface - # directly, so calling .makefile() method is not required. If - # you develop application which will run only on MicroPython, - # especially on a resource-constrained embedded device, you - # may take this shortcut to save resources. - client_stream = client_sock - - print("Request:") - req = client_stream.readline() - print(req) - while True: - h = client_stream.readline() - if h == b"" or h == b"\r\n": - break - print(h) - client_stream.write(CONTENT % counter) - - client_stream.close() - if not micropython_optimize: - client_sock.close() - counter += 1 - print() - - -main() diff --git a/examples/network/http_server_simplistic.py b/examples/network/http_server_simplistic.py deleted file mode 100644 index 67ecb1ad7..000000000 --- a/examples/network/http_server_simplistic.py +++ /dev/null @@ -1,40 +0,0 @@ -# Do not use this code in real projects! Read -# http_server_simplistic_commented.py for details. -try: - import usocket as socket -except: - import socket - - -CONTENT = b"""\ -HTTP/1.0 200 OK - -Hello #%d from MicroPython! -""" - -def main(): - s = socket.socket() - ai = socket.getaddrinfo("0.0.0.0", 8080) - addr = ai[0][-1] - - s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) - - s.bind(addr) - s.listen(5) - print("Listening, connect your browser to http://<this_host>:8080/") - - counter = 0 - while True: - res = s.accept() - client_s = res[0] - client_addr = res[1] - req = client_s.recv(4096) - print("Request:") - print(req) - client_s.send(CONTENT % counter) - client_s.close() - counter += 1 - print() - - -main() diff --git a/examples/network/http_server_simplistic_commented.py b/examples/network/http_server_simplistic_commented.py deleted file mode 100644 index b58e9eeb6..000000000 --- a/examples/network/http_server_simplistic_commented.py +++ /dev/null @@ -1,76 +0,0 @@ -# -# MicroPython http_server_simplistic.py example -# -# This example shows how to write the smallest possible HTTP -# server in MicroPython. With comments and convenience code -# removed, this example can be compressed literally to ten -# lines. There's a catch though - read comments below for -# details, and use this code only for quick hacks, preferring -# http_server.py for "real thing". -# -try: - import usocket as socket -except: - import socket - - -CONTENT = b"""\ -HTTP/1.0 200 OK - -Hello #%d from MicroPython! -""" - -def main(): - s = socket.socket() - - # Bind to (allow to be connected on ) all interfaces. This means - # this server will be accessible to other hosts on your local - # network, and if your server has direct (non-firewalled) connection - # to the Internet, then to anyone on the Internet. We bind to all - # interfaces to let this example work easily on embedded MicroPython - # targets, which you will likely access from another machine on your - # local network. Take care when running this on an Internet-connected - # machine though! Replace "0.0.0.0" with "127.0.0.1" if in doubt, to - # make the server accessible only on the machine it runs on. - ai = socket.getaddrinfo("0.0.0.0", 8080) - print("Bind address info:", ai) - addr = ai[0][-1] - - # A port on which a socket listened remains inactive during some time. - # This means that if you run this sample, terminate it, and run again - # you will likely get an error. To avoid this timeout, set SO_REUSEADDR - # socket option. - s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) - - s.bind(addr) - s.listen(5) - print("Listening, connect your browser to http://<this_host>: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) - # We assume here that .recv() call will read entire HTTP request - # from client. This is usually true, at least on "big OS" systems - # like Linux/MacOS/Windows. But that doesn't have to be true in - # all cases, in particular on embedded systems, when there can - # easily be "short recv", where it returns much less than requested - # data size. That's why this example is called "simplistic" - it - # shows that writing a web server in Python that *usually works* is - # ten lines of code, and you can use this technique for quick hacks - # and experimentation. But don't do it like that in production - # applications - instead, parse HTTP request properly, as shown - # by http_server.py example. - req = client_s.recv(4096) - print("Request:") - print(req) - client_s.send(CONTENT % counter) - client_s.close() - counter += 1 - print() - - -main() diff --git a/examples/network/http_server_ssl.py b/examples/network/http_server_ssl.py deleted file mode 100644 index 9a69ca9d4..000000000 --- a/examples/network/http_server_ssl.py +++ /dev/null @@ -1,64 +0,0 @@ -try: - import usocket as socket -except: - import socket -import ussl as ssl - - -CONTENT = b"""\ -HTTP/1.0 200 OK - -Hello #%d from MicroPython! -""" - -def main(use_stream=True): - s = socket.socket() - - # Binding to all interfaces - server will be accessible to other hosts! - ai = socket.getaddrinfo("0.0.0.0", 8443) - print("Bind address info:", ai) - addr = ai[0][-1] - - s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) - s.bind(addr) - s.listen(5) - print("Listening, connect your browser to https://<this_host>:8443/") - - 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) - client_s = ssl.wrap_socket(client_s, server_side=True) - print(client_s) - print("Request:") - if use_stream: - # Both CPython and MicroPython SSLSocket objects support read() and - # write() methods. - # Browsers are prone to terminate SSL connection abruptly if they - # see unknown certificate, etc. We must continue in such case - - # next request they issue will likely be more well-behaving and - # will succeed. - try: - req = client_s.readline() - print(req) - while True: - h = client_s.readline() - if h == b"" or h == b"\r\n": - break - print(h) - if req: - client_s.write(CONTENT % counter) - except Exception as e: - print("Exception serving request:", e) - else: - print(client_s.recv(4096)) - client_s.send(CONTENT % counter) - client_s.close() - counter += 1 - print() - - -main() |
