Code: Select all
import socketpool
import wifi
import binascii
import time
ssid='ssssssss'
pw='pppppp'
mac = ':'.join(binascii.hexlify(wifi.radio.mac_address).decode('utf-8')[i:i+2] for i in range(0, 12, 2))
print("My MAC addr:", mac)
print("Available WiFi networks:")
rssi = -100
for network in wifi.radio.start_scanning_networks():
if str(network.ssid) == ssid and network.rssi > rssi:
rssi = network.rssi
print(f'{network.ssid}\trssi:{network.rssi}\t ch:{network.channel}')
wifi.radio.stop_scanning_networks()
ok = False
for i in range(5):
try:
print(f"Connecting to {ssid} with rssi={rssi}")
wifi.radio.connect(ssid, pw)
ok = True
break
except Exception as e:
print(f'Failed connecting #{i+1}, retrying...')
time.sleep(0.5)
if ok:
myip = wifi.radio.ipv4_address
print('network IP:', myip)
Code: Select all
socket = socketpool.SocketPool(wifi.radio)
server_ip='192.168.31.10' # some ip
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
sock.connect((server_ip, 80))
except Exception as e:
print("Connection Error:", e)
Setting sock.settimeout(2) has no effect on connect. It is used by sock.recv_into.
So my question is: is there any way to set a timeout for the connection?