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
| SOCKET sock; //Création de la socket
SOCKADDR_IN sin;
int size = 10;
char buffer[size];
memset(buffer, 0, size);
fd_set readfs;
struct timeval tv;
sin.sin_addr.s_addr = inet_addr(ip);
sin.sin_family = AF_INET;
sin.sin_port = htons(502);
sock = socket(AF_INET,SOCK_STREAM,0);
bind(sock, (SOCKADDR *)&sin, sizeof(sin));
int ret = 0;
FD_ZERO(&readfs);
FD_SET(sock, &readfs);
tv.tv_sec = 5;
tv.tv_usec = 0;
setsockopt(sock, SOL_SOCKET, SO_SNDTIMEO, (void *)&tv, sizeof(tv));
if(connect(sock, (SOCKADDR *)&sin, sizeof(sin)) == SOCKET_ERROR)
return "-1";
buffer[0] = 0x00; //Transaction ID
buffer[1] = 0x01; //Transactio6n ID
buffer[2] = 0x00; //Protocole ID
buffer[3] = 0x00; //Protocole ID
buffer[4] = 0x00; //Length
buffer[5] = 0x04; //Length
buffer[6] = numEsclave; //Numéro d'esclave
buffer[7] = 0x11; //Numéro de la fonction
// Pas de CRC 16 dans ce mode de contact !
//Envoie de la socket
int a = send(sock, //La socket à envoyer
buffer, //La requete à envoyer
size, //La taille de la requete
0);
if(a < 0)
return "-1"; |
Partager