Bonjours actuellement j'utilise le composant TTcpClient pour faire une communication.
Je voulais savoir si il existais de rendre ce composant Thread Safe, ou est ce qu'il existe un equivalent qui le soit
Cordialement Baxter
Version imprimable
Bonjours actuellement j'utilise le composant TTcpClient pour faire une communication.
Je voulais savoir si il existais de rendre ce composant Thread Safe, ou est ce qu'il existe un equivalent qui le soit
Cordialement Baxter
Question de novice mais ... qu'appelles-tu thread safe ?
Ben que je puisse utiliser les fonctions send receive du TCPclient dans un thread sans risquer de le faire planter
Je ne vois pas pourquoi le thread planterait en fait.
Personnellement j'utilise le TCPclient et Tcpserveur dans 2 logiciels et je n'ai jamais eut de problèmes de plantage ( pas encore tout du moins ).
Sa peut venir d'une TList le plantage d'un thread ??
il se fige
mais il n'y a pas de message d'erreur
il y a un timeout il me semble pour le receive
une partie du code est poster sur ce topic :
http://www.developpez.net/forums/d63...antage-thread/
Je ne sais pas pour le timeout, à priori je ne l'ai jamais utilisé / activé si c'est le cas ( mais je vais regarder car cela peut être intéressant ! )
Par contre il y a un truc qui me choque, peut-etre à tord à toi de me le dire, c'est que tu fais un :
Form1->OpenModBusClient->ReceiveBuf(BufferW,20);
autrement dit tu précises qu'il te faut 20 octets.
Que se passe-t-il si l'émetteur t'envoie 22 octets par exemple ?
Tu ne vas en lire que 20 et le coup d'après tu vas te retrouver avec les 2 octets qu'il te reste d'où un problème possible de compréhension par le programme non ?
Personnellement je faisais comme ça lors de mes premières utilisations du TCPClient et je suis rapidement passé à un Receive avec un très grand nombre d'octet en parametre, il ne remplira pas tout mais au moins tu seras certain d'avoir "libéré le buffer".
Une cause possible de figeage de ton programme?
ben étan donné que je communque avec un automate Télemecanique, les trames qu'il me renvoie sont toujours de la meme taille, mais je vais mettre un buffer beaucoup plus grand par sécurité
On ne sait jamais, j'ai déjà eu des surprises dans des trames sencées être de taille fixe et de temps en temps on a une trame qui sort du lot et qui n'est pas conforme aux spécifications, ce qui fige le truc.
Tiens moi au courant pour savoir si c'est toujours pareil ou si ça améliore les choses.
sa ne change rien, avez vous d'autre idées ??