Add socket examples (simple HTTP client and server).
This commit is contained in:
parent
e02b2d4391
commit
e2f3e1d24a
22
examples/unix/sock-client.py
Normal file
22
examples/unix/sock-client.py
Normal file
@ -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())
|
28
examples/unix/sock-server.py
Normal file
28
examples/unix/sock-server.py
Normal file
@ -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
|
Loading…
x
Reference in New Issue
Block a user