slt, je développe un client MODBUS TCP et j'ai essayé de le tester avec un serveur Modbus. La connexion marche bien ainsi que l'envoi mais je trouve un problème au niveau de la réception:

la requete que j'ai envoyé st de la forme suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
 char* buffsendnew char[521];
buffsend="0001 0000 0006 01 03 0000 0002";
voici la méthode de reception
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
34
35
36
37
38
39
40
41
 
bool CCommunicationTCPClient::RecvFromServer()
{
  int sz;
 char* buffeur=new char[521];
  int len_buffer=(int)strlen(buffer);
  struct timeval timeout;
  fd_set readfs;
  FD_ZERO (&readfs);      
  FD_SET (csock, &readfs);
  timeout.tv_sec = 1000; /* 30 s */
  timeout.tv_usec = 5 * 100 * 1000; /* 500 ms */
 
  int err = select (csock+1, &readfs, NULL, NULL, &timeout);
 
  if (err==0)
    {
        MessageBoxA("Timeout recv","",MB_ICONEXCLAMATION);
		return false;
    }
 
   else if (FD_ISSET (csock, &readfs))
    {
 
       sz = recv(csock, buffer,len_buffer+1, 0);
 
	   if(sz ==SOCKET_ERROR)
          {
             MessageBoxA("erreur de reception","Error",MB_ICONEXCLAMATION);
	         return false;
          }
	   else
	    {
           buffer[sz]='\0';
	    MessageBoxA("reception effectuée avec succès","reception",NULL);	       
           return true;
	   }
	}
 
   else return false;
}
je n'ai pas pu détecter l'erreur. Merci de m'aider