Ethernet/TCP/UDP sockets
Ethernet related examples.
Connect with DHCP
You need a router to assign an IP address to the SBC.
import time
import network
lan = network.LAN()
lan.active(True)
while(not lan.isconnected()):
print(lan.isconnected())
time.sleep(1)
print(lan.ifconfig())
Connect with a fixed IP address
The SBC IP address configuration must be compatible with the network where you want to connect.
Note
You can check this tutorial to set a fixed IP address on your PC.
import network
lan = network.LAN()
lan.active(True)
(lan_ip, lan_subnet, lan_gateway, lan_dns) = ("10.0.0.1", "255.255.255.0", "10.0.0.2", "8.8.8.8")
lan.ifconfig((lan_ip, lan_subnet, lan_gateway, lan_dns))
print(lan.ifconfig())
Download a webpage
A simple urequests request is needed to download a webpage.
import network
import urequests as requests
lan = network.LAN()
lan.active(True)
(lan_ip, lan_subnet, lan_gateway, lan_dns) = ("10.0.0.1", "255.255.255.0", "10.0.0.2", "8.8.8.8")
lan.ifconfig((lan_ip, lan_subnet, lan_gateway, lan_dns))
req = requests.get("https://www.google.com/")
print( req.content )
req.close()
HTTP webserver
This examples shows simple HTTP server that can handle client requests.
Note
In order to run this test, you need to create a folder on the SBC flash memory called web, and place inside this file: index.html
.
import time
import network
import socket
lan = network.LAN()
lan.active(True)
(lan_ip, lan_subnet, lan_gateway, lan_dns) = ("10.0.0.1", "255.255.255.0", "10.0.0.2", "8.8.8.8")
lan.ifconfig((lan_ip, lan_subnet, lan_gateway, lan_dns))
index_html = open( "./web/index.html" ).read()
ip, port = "", 80
sock = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
sock.setsockopt( socket.SOL_SOCKET, socket.SO_REUSEADDR, 1 )
sock.bind( (ip, port) )
sock.listen(0)
while( True ):
conn, addr = sock.accept()
buf = conn.recv( 1024 )
if( b"GET / HTTP/1.1" in buf ):
conn.sendall( index_html )
else:
conn.sendall( "404" )
conn.close()
time.sleep(0.1)
Send information to TCP socket
import time
import network
import socket
lan = network.LAN()
lan.active( True )
while( not lan.isconnected() ):
print( lan.isconnected() )
time.sleep(1)
print( lan.ifconfig() )
ip, port = '192.168.1.102', 1234
sock = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
sock.send("hello world")
print( sock.recv(1024) )
sock.close()
Send information to UDP socket
import time
import network
import socket
lan = network.LAN()
lan.active( True )
while( not lan.isconnected() ):
print( lan.isconnected() )
time.sleep(1)
print( lan.ifconfig() )
ip, port = '192.168.1.102', 1234
sock = socket.socket( socket.AF_INET, socket.SOCK_DGRAM )
sock.send("hello world")
print( sock.recv(1024) )
sock.close()
Socket echo server
This example shows how to create an echo server
import time
import network
import socket
lan = network.LAN()
lan.active( True )
while( not lan.isconnected() ):
print( lan.isconnected() )
time.sleep(1)
print( lan.ifconfig() )
ip, port = "", 80
sock = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
sock.setsockopt( socket.SOL_SOCKET, socket.SO_REUSEADDR, 1 )
sock.bind( (ip, port) )
sock.listen(0)
while( True ):
conn, addr = sock.accept()
buf = conn.recv( 1024 )
conn.sendall( buf )
conn.close()
time.sleep(0.1)
Socket client
This example shows how to create simple socket client that connects to an socket server
import time
import network
import socket
lan = network.LAN()
lan.active( True )
while( not lan.isconnected() ):
print( lan.isconnected() )
time.sleep(1)
print( lan.ifconfig() )
ip, port = "", 80
sock = socket.socket()
sock.connect((host, port))
sock.send( b"Hello World!" )
print( sock.recv(1024) )
sock.close()