连接wifi
import network as n
wlan =n.WLAN(n.STA_IF)
wlan.active(True)
wlan.disconnect() #先断开已有链接,以免重连出错
wlan.connect("SSID","PASSWORD") #SSID和PASSWORD分别为WiFi名称和密码
wlan.ifconfig()
确保硬件ESP8266与电脑处于同一wifi下,通过wlan.ifconfig()获取wifi的ip地址,获取本机ip地址操作如下:
WIN+R打开运行
输入CMD,打开命令控制窗口
输入ipconfig,获取本机ip
#服务器
import socket
import network as n
import time
port = **** #服务器端口
SSID="*****" #WiFi名称
PASSWORD="*******" #WiFi密码
wlan=None
s=None
def connectWifi(ssid,passwd):
global wlan
wlan=n.WLAN(n.STA_IF)
wlan.active(True)
#关闭连接,确保没有任何连接,以免失败
wlan.disconnect()
wlan.connect(ssid,passwd)
while(wlan.ifconfig()[0]=='0.0.0.0'):
time.sleep(1)
return True
#用try的方法确保保持连接
try:
if(connectWifi(SSID, PASSWORD) == True):
#建立Socket连接
s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
#Socket属性
s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
#获得IP地址
ip=wlan.ifconfig()[0]
print("UDP SERVER IP:", ip, ":", port)
#绑定IP地址
s.bind((ip,port))
print('Waiting...')
while True:
data,addr=s.recvfrom(1024)
print('Received:',data,'From',addr)
s.sendto(data,addr)#原样发回
except:
if (s):
s.close()
wlan.disconnect()
wlan.active(False)
#客户端
import socket
import network as n
import time
host='******' #服务器IP地址
port = **** #服务器端口
SSID="****" #WiFi名称
PASSWORD="*****" #WiFi密码
wlan=None
s=None
def connectWifi(ssid,passwd):
global wlan
wlan=n.WLAN(n.STA_IF)
wlan.active(True)
#关闭连接,确保没有任何连接,以免失败
wlan.disconnect()
wlan.connect(ssid,passwd)
while(wlan.ifconfig()[0]=='0.0.0.0'):
time.sleep(1)
return True
#用try的方法确保保持连接
try:
if(connectWifi(SSID,PASSWORD) == True):
#建立Socket连接
s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
#Socket属性
s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
#向服务器发送数据
print("UDP Connected to:", host, ":", port)
while True:
s.sendto(b'Hello,I am UDP Client\r\n',(host,port))
time.sleep(1)
except:
if (s):
s.close()
wlan.disconnect()
wlan.active(False)
#服务器
import network as n
import socket
import time
SSID="****" #WiFi名
PASSWORD="********" #WiFi密码
port=**** #服务器端口
wlan=None
listenSocket=None
def connectWifi(ssid,passwd):
global wlan
wlan=n.WLAN(n.STA_IF)
wlan.active(True)
#关闭连接,确保没有任何连接,以免失败
wlan.disconnect()
wlan.connect(ssid,passwd)
while(wlan.ifconfig()[0]=='0.0.0.0'):
time.sleep(1)
return True
#用try的方法确保保持连接
try:
connectWifi(SSID,PASSWORD)
#获得IP地址
ip=wlan.ifconfig()[0]
#建立Socket连接
listenSocket = socket.socket()
#绑定IP地址
listenSocket.bind((ip,port))
print("TCP SERVER IP:",ip,":",port)
#Socket属性
listenSocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
#侦听
listenSocket.listen(1)
print ('TCP waiting...')
while True:
print("Accepting.....")
#获取客户端信息
conn,addr = listenSocket.accept()
print(addr,"Connected")
while True:
data = conn.recv(1024)
if(len(data) == 0):
print("Close socket") #无数据关闭Socket
conn.close()
break
print(data)
conn.send(data) #原样发回
except:
if(listenSocket):
listenSocket.close()
wlan.disconnect()
wlan.active(False)
#客户端
import network as n
import socket
import time
SSID="****" #WiFi名
PASSWORD="******" #WiFi密码
host="*******" #服务器IP地址
port=***** #服务器端口
wlan=None
s=None
def connectWifi(ssid,passwd):
global wlan
wlan=n.WLAN(n.STA_IF)
wlan.active(True)
#关闭连接,确保没有任何连接,以免失败
wlan.disconnect()
wlan.connect(ssid,passwd)
#确保WiFi连接成功
while(wlan.ifconfig()[0]=='0.0.0.0'):
time.sleep(1)
return True
#用try的方法确保保持连接
try:
connectWifi(SSID,PASSWORD)
#建立socket连接
s = socket.socket()
#Socket属性
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
#连接服务器
s.connect((host,port))
#发送数据
print("TCP Connected to:", host, ":", port)
while True:
data = s.recv(1024)
if(len(data) == 0): #无数据关闭Socket
print("Close socket")
s.close()
break
print(data)
ret=s.send(data) #数据原样发回
except:
if (s):
s.close()
wlan.disconnect()
wlan.active(False)