Salut
Je fais un test avec Winsock et Boost pour les threads. Mais j'ai un problème.
Le code suivant fonctionne très bien :
Code :
- void main(int argc, char *argv[])
- {
- std::cout << "running....\n";
- try
- {
- // Create the socket
- ServerSocket server ( 30000 );
- int i = 0;
- boost::thread_group thrds;
- while ( true )
- {
- ServerSocket new_sock;
- server.accept ( new_sock );
- try
- {
- while ( true )
- {
- std::string data;
- s >> data;
- if (data != "" )
- {
- std::cout << "data recieved....\n";
- s << data;
- std::cout << "data sent....\n";
- }
- }
- }
- catch ( SocketException& e)
- {
- [...]
- }
- }
- }
- catch ( SocketException& e )
- {
- [...]
- }
- }
|
Alors que celui-ci plante:
Code :
- void listener(ServerSocket& s)
- {
- std::cout << "thread started.... \n";
- try
- {
- while ( true )
- {
- std::string data;
- s >> data;
- if (data != "" )
- {
- std::cout << "data recieved....\n";
- s << data;
- std::cout << "data sent....\n";
- }
- }
- }
- catch ( SocketException& e)
- {
- [...]
- }
- }
- void main(int argc, char *argv[])
- {
- //cin cout cerr << "After print" << endl;
- //Socket *so = new Socket();
- std::cout << "running....\n";
- try
- {
- // Create the socket
- ServerSocket server ( 30000 );
- int i = 0;
- boost::thread_group thrds;
- while ( true )
- {
- ServerSocket new_sock;
- server.accept ( new_sock );
- boost::thread thrd(boost::bind(&listener, new_sock));
- thrd.join();
- }
- }
- catch ( SocketException& e )
- {
- [..]
- }
- }
|
Socket est un type que j'ai créé.
Le thread se créé mais le programme semble incapable de recevoir des données par le réseau.
J'ai juste essayé de créé un thread pour faire une opération très simple. Peut-être est-ce un problère de pointeur, j'avoue que les pointeurs restent un peut flous pour moi.
Quelqu'un qurait-il une idée du problème ?
Merci
Message édité par Imhotep le 29-10-2004 à 14:23:21