Bonjour
J'ai un circuit Micropython qui se reveille toute les minutes, se connecte au Wifi, ouvre une socket et tente de pousser une chaine de charactere.
De l'autre coté sur un raspberry j'ai un script python qui ouvre la même socket et essai de la lire.
Cela marche un certain temps (entre quelques cylcles et quelques heures) mais inevitablement au bout d'un momment le programme coté Raspberry n'arrive plus a lire.
Si je le redemarre coté Raspberry cela repart...
J'ai essayé de faire tourner le programme raspberry dans :
- une boucle "while True" en attente de la socket
- dans un script lancé par la crontab régulierement
=> meme probleme
C'est comme si la socket etait saturé au bout d'un certain temps?
(quand cela ne "marche plus" un
semble montrer que le process ecoute bien toujours sur le port.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 netstat -tupln |grep 112zz tcp 3 0 192.168.xx.yy:112zz 0.0.0.0:* LISTEN -
Le code que je fait tourner coté Raspberry est le suivant :
Une idee de comment debugger ou ameliorer mon code pour que la "connection" ne se bloque pas....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 #!/usr/bin/env python3 import socket mySocket = socket.socket(family=socket.AF_INET, type=socket.SOCK_STREAM, proto=0, fileno=None) mySocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) hostname = '192.168.xx.yy' portno = 11222 mySocket.bind((hostname, portno)) mySocket.listen(2) if __name__ == "__main__": #while True: client, client_addr = mySocket.accept() print('Connection established with client at address {}'.format(client_addr)) message = client.recv(1024).decode() print(message) client.close()
Merci
Partager