【发布时间】:2014-05-11 21:57:48
【问题描述】:
我在 C 客户端中写了这段代码来获取一个 int 数,对其进行编码并通过套接字发送它
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 );
}
一切看起来都很好,我得到了输出
Enter a number :
2
<Message01>
<number>2</number>
</Message01>
但是在java服务器中我得到了这个错误
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);
【问题讨论】: