Faire cohabiter deux sockets TCP dans le même script
Bonjour à tous,
Pour résumer mon code, on attend (code bloquant) de recevoir une requête en provenance d'une raspberry (contenant un identifiant), ensuite on fait mumuse avec des GPIO en fonction de l'identifiant reçu, puis on envoie une requête à un autre équipement, contenant de l'ASCII. La requête doit être reçue sur le port 15555 et la requête sortante sur le port 5045
Voici mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| # coding: utf-8
import socket
import RPi.GPIO as GPIO
import time
gache = [17,27,22,0,0,0,0,0,0,0,22]
def ouvrirGache(numGache):
if (numGache > 0): ouvrirGache(0)
GPIO.output(gache[numGache],True)
time.sleep(2)
GPIO.output(gache[numGache],False)
rx = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
rx.bind(('', 15555))
tx = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
GPIO.setmode(GPIO.BCM)
for i in range(0,11):
GPIO.setup(gache[i],GPIO.OUT)
while True:
rx.listen(5)
client, address = rx.accept()
reponse = client.recv(255)
ouvrirGache( int(reponse) )
tx.connect(('172.17.4.83', 5045))
tx.send('TEST.')
tx.close()
print "Close"
client.close()
rx.close()
GPIO.cleanup() |
Cependant, j'obtiens les erreurs suivantes :
Code:
1 2 3 4 5 6 7 8
| Traceback (most recent call last):
File "Desktop/TCPsockets.py", line 30, in <module>
tx.connect(('172.17.4.83', 5045))
File "/usr/lib/python2.7/socket.py", line 228, in meth
return getattr(self._sock,name)(*args)
File "/usr/lib/python2.7/socket.py", line 174, in _dummy
raise error(EBADF, 'Bad file descriptor')
socket.error: [Errno 9] Bad file descriptor |
Une idée ?
Merci et bonne journée à tous,
Cordialement,
Waryard