TCP 프로토콜을 통해 포트에서 데이터를 수신 할 수있는 코드를 만들었습니다. ESP8266에서 15 분마다 데이터를 수신 한 후 ESP는 deepSleep 모드로 전환됩니다. 연속적으로 작동하도록 변경하는 방법? while 루프에서 새로운 연결을 만들고 싶었지만 작동하지 않습니다.TCP 포트 연속 수신
내 코드
import sys
import socket
TCP_IP = '192.168.42.1'
TCP_PORT = 8888
BUFFER_SIZE = 1024
param = []
i=0
#s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#s.bind((TCP_IP,TCP_PORT))
#s.listen(1)
#print 'Listening for client...'
#conn, addr = s.accept()
#print 'Connection address:', addr
while 1:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((TCP_IP,TCP_PORT))
s.listen(1)
print 'Listening for client...'
conn, addr = s.accept()
print 'Connection address:', addr
data = conn.recv(BUFFER_SIZE)
if data == ";" :
conn.close()
print "Received all the data"
i=0
for x in param:
print x
#break
elif data:
print "received data: ", data
param.insert(i,data)
i+=1
#print "End of transmission"
편집 : 수정 후
내 코드입니다.
import sys
import socket
TCP_IP = '192.168.42.1'
TCP_PORT = 8888
BUFFER_SIZE = 1024
param = []
i=0
#s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#s.bind((TCP_IP,TCP_PORT))
#s.listen(1)
#print 'Listening for client...'
#conn, addr = s.accept()
#print 'Connection address:', addr
while 1:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((TCP_IP,TCP_PORT))
s.listen(1)
while 1:
print 'Listening for client...'
conn, addr = s.accept()
print 'Connection address:', addr
data = conn.recv(BUFFER_SIZE)
if data == ";" :
conn.close()
print "Received all the data"
i=0
for x in param:
print x
#break
elif data:
print "received data: ", data
param.insert(i,data)
i+=1
#print "End of transmission"
s.close()
두 번째 while 루프를 만들었습니다. 지금도 계속들을 수 있지만 ESP (ESP는 9 패킷 전송)에서 하나의 패킷 만받습니다. 그 문제를 해결하는 방법? 당신이 지속적으로 원격 끝에서 연결 및 데이터를 수신하려면
TCP 소켓의 제한 시간을 15 분 이상으로 설정할 수 있습니다. –
당신은 15 분 후에 새로운 소켓 연결을 만들기 위해'socket.close()'와'time.sleep (15 * 60)'을 추가하고 while 회 돌이를 끝낼 수 있습니다. –