summaryrefslogtreecommitdiff
path: root/examples/network
diff options
context:
space:
mode:
authorDan Halbert <halbert@halwitz.org>2018-02-27 22:03:52 -0500
committerGitHub <noreply@github.com>2018-02-27 22:03:52 -0500
commit568c04e6afa8016062f685b2198c0209f62827f4 (patch)
treed07b76119f715add462983b335797adf64b61249 /examples/network
parent6a2379fd0bfe10017d8abc5c36ef1d470c0d9b27 (diff)
parentea633117d01d94e8d56ed94344e4b3e46b4eef03 (diff)
Merge pull request #650 from tannewt/merge_2x3.0.0-alpha.2
Merge in commits from 2.x branch.
Diffstat (limited to 'examples/network')
-rw-r--r--examples/network/http_client.py30
-rw-r--r--examples/network/http_client_ssl.py38
-rw-r--r--examples/network/http_server.py64
-rw-r--r--examples/network/http_server_simplistic.py40
-rw-r--r--examples/network/http_server_simplistic_commented.py76
-rw-r--r--examples/network/http_server_ssl.py64
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()