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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
| /** \brief envois de la taille du buffer et du buffer sur le socket
* \param buffer a envoyer
* \param socket sur lequel envoyer
* \return void
*/
static void Dsend(const void * buffer, SOCKET sock,int size){
int res=0,err=0;
if(send(sock,&size,sizeof(int),0)<0){
perror("send()");
exit(errno);
}
if(recv(sock,&res,sizeof(int),0)<0){
perror("recv()");
exit(errno);
}
#ifdef DEBUG_ENVOIE
printf("size: %u\n",size);
#endif // DEBUG_ENVOIE
if(res==size){
err=1;
if(send(sock,&err,sizeof(int),0)<0){
perror("send()");
exit(errno);
}
if(send(sock,buffer,size,0)<0){
perror("send()");
exit(errno);
}
}
else{
err=33;
if(send(sock,&err,sizeof(int),0)<0){
perror("send()");
exit(errno);
}
}
}
/** \brief reception des infos envoyer par Dsend
*
* \param buffer a remplir
* \param socket client sur lequel ecouter
* \return taille du buffer
*/
static void * Drecv(SOCKET csock,int *size){
int res=0;
void *data=NULL;
if(recv(csock, size,sizeof(int),0)<0){
perror("recv()");
exit(errno);
}
printf("size Drecv:%u\n",*size);
if(send(csock,size,sizeof(int),0)<0){
perror("send()");
exit(errno);
}
if(recv(csock, &res,sizeof(int),0)<0){
perror("recv()");
exit(errno);
}
if(res==1)
{
data=malloc(*size);
if(recv(csock, data,*size,0)<0){
perror("recv()");
exit(errno);
}
}
return data;
} |
Partager