Envoyer des données asn1 du client au serveur avec socket

J’ai écrit ce code dans le client C pour obtenir un numéro int, le coder et l’envoyer via socket

int clientNumber; printf("Enter a number :\n "); scanf("%d",&clientNumber); Message01_t *message1; message1 = calloc(1, sizeof(Message01_t)); message1->number= clientNumber; char buffer[BUFFERSIZE]; size_t bufferLen = sizeof(buffer); der_encode_to_buffer(&asn_DEF_Message01, message1, buffer, bufferLen); xer_fprint(stdout, &asn_DEF_Message01, message1); if( send( to_server_socket, &message1, sizeof( message1 ), 0 ) != sizeof( message1) ) { printf( "socket write failed"); exit( -1 ); } 

Tout a l’air bien, j’ai eu pour la sortie

 Enter a number : 2  2  

Mais dans le serveur Java je reçois cette erreur

 received data: B0 41 40 A1 B4 com.chaosinmotion.asn1.AsnFatalException: >> During decoding, the encoded tag value in the byte array does not match with this object's tag number ! at com.turkcelltech.jac.Sequence.decode(Sequence.java:100) at ServiceRequest.run(ServiceRequest.java:30) this is the server code BerInputStream bin = receive(5); Message01 msg01 = new Message01(); msg01.decode(bin); printMessage(msg01); 

Le problème est que vous avez envoyé la structure ( message1 ) à la place du tampon codé. Modifiez la dernière partie du programme C en:

 if( send( to_server_socket, buffer, bufferLen, 0 ) != bufferLen ) { printf( "socket write failed"); exit( -1 ); } 

Attendez-vous à quelque chose comme une séquence d’octets suivants (hexa) 30 03 02 01 02