kopia lustrzana https://github.com/peterhinch/micropython-samples
45 wiersze
1.3 KiB
Python
45 wiersze
1.3 KiB
Python
# Minimal stream based socket seerver. To test client exception handling. Can
|
|
# only handle a single client but will cope with client failure and reconnect.
|
|
# Run under MicroPython Unix build.
|
|
|
|
import usocket as socket
|
|
import utime
|
|
addr = socket.getaddrinfo('0.0.0.0', 8123)[0][-1]
|
|
|
|
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
|
s.bind(addr)
|
|
s.listen(1)
|
|
|
|
def run(write=True):
|
|
try:
|
|
while True:
|
|
print('Awaiting connection.')
|
|
try:
|
|
conn, addr = s.accept()
|
|
except OSError as er:
|
|
print('Connect fail:', er.args[0])
|
|
conn.close()
|
|
continue
|
|
|
|
print('Got connection from', addr)
|
|
try:
|
|
while True:
|
|
if write:
|
|
conn.send(b'0123456789\n') # OSError on fail
|
|
utime.sleep(1)
|
|
else:
|
|
line = conn.readline()
|
|
if line == b'':
|
|
print('Connection fail')
|
|
break
|
|
else:
|
|
print(line)
|
|
except OSError:
|
|
conn.close()
|
|
finally:
|
|
conn.close()
|
|
s.close()
|
|
|
|
print('run() to send lines of 11 bytes on port 8123,')
|
|
print('run(False) to read lines')
|