Bonjour à tous, j'ai réaliser un petit programme de discution entre une camera et un logiciel par TCP. Les fonctions de connections sont appelées dans un thread qui est lancer par un bouton start. Je réussi la connection, reçoie les données de plusieurs acquisition: c'est à dire qu'entre chaque acquisition je ferme la conncetion puis relance la connection quand la camera envoie les donnée. J'appuie sur le bouton stop, le thread semble s'arreté mais si je rappuis sur le bouton start le program plante. Après un débug j'ai trouvé que la fonction suivante n'attandait plus l'envoie de la socket par la camera (la premiere fois que j'appuis sur start le debug fait une pause sur la fonction accept en attendant la connection de la camera, mais plus une fois que le thread est arreté puis relancer). Si je stop le thread, stop le programme et le relance puis relance une acquisition (bouton start) tout marche bien.
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
22
23
24
25
26
27
28
29
30
31
32
33
 
void WComm::waitForClient()
{
 
            AcceptSocket = accept( m_backup, NULL, NULL );
 
        m_socket = AcceptSocket;
}
 
//voila mon constructeur de class et destructeur
 
WComm::WComm()
{
 
    // Initialize Winsock.
    int iResult = WSAStartup( MAKEWORD(2,2), &wsaData );
    if ( iResult != NO_ERROR )
        printf("Error at WSAStartup()\n");
 
    // Create a socket.
    m_socket = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
 
    if ( m_socket == INVALID_SOCKET ) {
        printf( "Error at socket(): %ld\n", WSAGetLastError() );
        WSACleanup();
        return;
    }
 
	m_backup = m_socket;
 
 
}
WComm::~WComm(){WSACleanup();}
Cela vient-il du thread ou de la fonction accept qui est ma réinitialisé?
Merci de votre aide ça fait deux jour que je bloque j'ai le cerveau qui commence à surchauffer...Juste une petite précision, je programme sous Visual C++.

Nico