I am trying to communicate between two esp8266 node mcu boards without any wifi router , i wish to implement this using basic sockets , i am new to programming and this is my first project with the node mcu , any inputs would be much appreciated . Thank you !
this code gives me the error OSError: [Errno 103] ECONNABORTED
###########################################################################################################
#SERVER
###########################################################################################################
import socket
import time
import sys
import network
# Create Access Point
ap = network.WLAN(network.AP_IF)
ap.active(True)
ap.config(essid="ESP8266", authmode=network.AUTH_WPA_WPA2_PSK, password="password")
print ('Yaaayyy Created Access Point')
##create a socket object
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server_address = ('', 31350)
#bind to port'
try:
serversocket.bind(server_address)
except socket.error as msg:
print ('Bind failed. Error Code : ' + str(msg[0]) + ' Message' + msg[1])
sys.exit()
print ('Socket bind complete')
# queue up to 10 requests
serversocket.listen(10)
print ('Socket now listening')
while True:
# establish a connection
print('waiting for a connection')
connection,client_address = serversocket.accept()
try:
print('connection from',client_address)
# Receive the data
while True:
data = connection.recv(3)
print('received "%s"' % data)
if data == b'end':
print('Socket closed')
connection.close()
serversocket.close()
break
try:
if data == b'FFF': ##edit switch function
print ("SW1")
elif data == b'SSS':
print ("SW2")
except:
print ("Input undefined",data)
continue
else:
connection,client_address = serversocket.accept()
continue
finally:
break
#Client
###########################################################################################################
import network
import time
import sys
def talk(data_to_send):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server_address = (package_server_ip, 31350)
sock.connect(server_address)
try:
message = (data_to_send)
print (message)
sock.sendall(message)
print ('sent')
amount_received = 0
amount_expected = len(data_to_send)
while amount_received < amount_expected:
if(data_to_send == 'end'):
break
data = sock.recv(3)
amount_received += len(data)
finally:
sock.close()
#connect to esp8266 access point
sta_if = network.WLAN(network.STA_IF); sta_if.active(True)
sta_if.connect('ESP8266', 'password') # Connect to an AP (name,password)
time.sleep(5) # wait for connection to complete
state = sta_if.status()
status = ['STA_IDLE','STA_CONNECTING','STA_WRONGPWD','STA_APNOTFOUND','STA_FAIL','STA_GOTIP']
print ('Status : ',status[state])#*DEBUGGING*#
print ('Is connected to router :' , sta_if.isconnected())#*DEBUGGING*#
package_server_ip='192.168.4.1' #Default IP address of esp8266 check if correct???
talk("FFF")
talk("end")# send 3 bytes to close sockets