Winsock et Threads (Boost) : Problème - C++ - Programmation
Marsh Posté le 29-10-2004 à 14:28:17
Et ça marche si tu appelles directement
listener(new_sock); en ligne 45 ?
De toutes façons, c'est péché de passer des références sur des variables locales à d'autres threads, donc quand tu enlèveras le join, ton code merdera...
Et sinon, ça t'affiche quoi exactement ? Le programme se lock ? Il sort tout seul ?
Marsh Posté le 29-10-2004 à 14:42:08
Lam's a écrit : Et ça marche si tu appelles directement |
Ah, très bonne question.
Après test, ca marche.
Alors je sais pas d'où ca viens le problème...
Citation : De toutes façons, c'est péché de passer des références sur des variables locales à d'autres threads, donc quand tu enlèveras le join, ton code merdera... |
En fait j'ai un client qui envoie un message, et le serveur lui renvoie simplement. Mais là il me sort une exception me disant qu'il n'a pa pu lire sur le socket. Alors il s'arrète.
Parce qu'en fait je veux faire un programme qui fait serveur, mais je ne sais pas du tout quelle architecture je dois donner à mon programme, ni combien de threads utiliser.
Marsh Posté le 29-10-2004 à 15:15:59
Je ne connais pas ton code, mais essaye de passer un type socket_id (plutôt qu'une référence ou autres) à la foncton "listener", et dedans, construit ton object Socket à partir du socket_id. Ca devrait nous dire s'il y a des problèmes au niveau de ton code ou si c'est autre chose...
Marsh Posté le 29-10-2004 à 14:21:33
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 :
Alors que celui-ci plante:
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