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()