bonjour tout le monde,
et bien je vous expose ma situation:
j'ai un thread qui ouvre une socket tcp via un port aleatoire.j'aimerai que ce thread puisse communiquer avec mon cgi mais le probleme:comment mon cgi va connaitre le numero de port déjà choisi par notre thread pour pouvoir se connecter dessus?quand je travaillais en mode static c'était hyper simple mais maintenant franchement je ne sais pa ou j'en suis.

voici mon thread:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
logging.debug('Entering getport in JP')
        self._TCPSock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
        done = False
        while not done:
            try:
                self._server_port = random.randint(40000,50000)
                self._listen_addr = ("", self._server_port)
#                self._listen_addr = ("", 0)
                self._TCPSock.bind(self._listen_addr)
                logging.debug('Created successfully on %d', self._server_port)
                done = True  # Binding worked, stop testing ports!
            except socket.error, err:
                logging.error('Impossible creation on %d', self._server_port)
        return self._server_port


voici mon ancien cgi.avant mon cgi prenait le numero de port depuis une page html(statiquement) :exemple @test.html?threadport=4000.
mais maintenant je veux que le numero de port(généré aleatoirement d'apres mon thread) soit transmis à ma page html pour qu'elle puissent faire la connection avec le thread via mon cgi.

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
form = cgi.FieldStorage()
 
if form.getvalue('threadport') == None:
    ''' First Entry'''
    portnb=40000
else:
    portnb=form.getvalue('threadport')
 
TCP_IP = '127.0.0.1'
TCP_PORT = int(portnb)
BUFFER_SIZE = 1024
MESSAGE="Content-type: text/html\n\n\n<html><body><br><br><br><br><center><font color='#ff3333' size='7'>hi guys<br><br><br></center></font></body></html>"
 
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((TCP_IP, TCP_PORT))
s.send(MESSAGE)
data = s.recv(BUFFER_SIZE)
s.close()
print data