Bonjour,
J'utilise Borland c++ builder 6.
Un TCustomWinSocket * monSocket; entre 2 ordis sur le réseau local.
Un TClientSocket *ClientSocket1;
Ces 2 programmes sont exécutés de façon indépendante, c'est à dire que je ne les lance pas en même temps, et ils peuvent redémarrer n'importe quand.
Des threads comme celui-ci :
Et de temps en temps, j'ai un popup qui me dit "Asynchronous socket error 10060" sur le client.
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 class TThreadClientSocket : public TThread { typedef struct tagTHREADNAME_INFO { DWORD dwType; // must be 0x1000 LPCSTR szName; // pointer to name (in user addr space) DWORD dwThreadID; // thread ID (-1=caller thread) DWORD dwFlags; // reserved for future use, must be zero } THREADNAME_INFO; private: void SetName(); protected: void __fastcall Execute(); public: __fastcall TThreadClientSocket(bool CreateSuspended); __fastcall TThreadClientSocket::~TThreadClientSocket(void); void __fastcall TThreadClientSocket::envoyerMessage(void); void __fastcall TThreadClientSocket::envoyerMessage(MESSAGE_SOCKET nouveau_message_socket, int nouvelle_valeur); void __fastcall TThreadClientSocket::erreur(TErrorEvent ErrorEvent, /*TErrorEvent ErrorEvent*/ int ErrorCode); void __fastcall TThreadClientSocket::deconnecte(void); void __fastcall TThreadClientSocket::connexion(void); void __fastcall TThreadClientSocket::connecte(void); void __fastcall TThreadClientSocket::lookup(void); void __fastcall TThreadClientSocket::lecture(void); void __fastcall TThreadClientSocket::ecriture(void); };
Cette erreur ne me gène pas trop pour le moment.
Ce sera l'étape n°2 de l'éviter ...
Mais déjà je la capture bien.
Voici ce que le programme me dit dans un TMemo lorsque je le lance (dans le cas ou ca marche pas) :
Je sais, beaucoup de blabla pour si peu...ca se répète.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Recherche le serveur... Serveur trouvé, connexion en cours... Connection... err. ErrorEvent: 3 ErrorCode: 10060 Erreur type 3 numéro 10060. Socket Error n°10060 : Unknown socket error. Unknown Accepting Disconnecting Connecting Socket Error n°10060 : Unknown socket error. Le client ou le serveur a interrompu la lisaison. Erreur type eeConnect numéro 0. Envoie du message impossible: non connecté!
Mais ma question n°1 : comment ne pas avoir ce popup ?
D'autant plus que mon thread essai de se reconnecter de temps en temps si ça marche pas, ce qui fait que je peux avoir une belle collection de popups quand j'allume l'écran !
Par contre, quand le serveur et le client sont ok, j'ai bien mon échange de messages et tout fonctionne.
Ne serait-ce pas une case à cocher dans Borland pour ne pas afficher les popups (genre projet/options..)?
PS j'ai des try/catch, et c'est la seule erreur qui affiche un popup.
J'ajoute que de temps en temps, sur le serveur, lorsqu'il redémarre (le programme, pas l'ordi) j'ai cela:
Par contre, je ne sais pas si j'ai un popup sur cet ordi dans ce cas là...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Erreure non critique : Exception Windows socket error: Une seule utilisation de chaque adresse de socket (protocole/adresse réseau/port) est habituellement autorisée (10048), on API 'bind'. Erreur FormActivate. Fichier: C:\c++camera\Prog_video_surv\Unit1.cpp Ligne:322
Il est possible que le socket ne soit pas bien quitté lorsque le programme s'arrête. Du coup il ne répond plus au client et j'ai une succession de popup sur le client.
Mais on verra plus tard.
Donc voila, merci à vous.
Partager