0

我尝试使用此代码发送和接收带有 ASN.1 生成类的整数

客户端发送整数:

ClientFirstRequest h = new ClientFirstRequest();
h.clientInt.setValue(9);
BerOutputStream bos = new BerOutputStream(_socket.getOutputStream());
h.encode(bos);

接收它的服务器:

ClientFirstRequest h = new ClientFirstRequest();
BerInputStream in = new BerInputStream(socket.getInputStream());
h.decode(in);
ASN1Integer ClientNumber= h.clientInt;
int clientNumbervalue = (int)ClientNumber.getValue();

它工作得很好,但在第二个序列中我必须发送两个参数,一个 Int 和一个 String

服务器发送一个整数和一个字符串

ServerFirstResponse response1 = new ServerFirstResponse();
response1.serverInt.setValue(clientNumbervalue);
response1.serverString.setValue(randomString);
BerOutputStream bos = new BerOutputStream(socket.getOutputStream());
h.encode(bos);

接收它们的客户

ServerFirstResponse response1 = new ServerFirstResponse();
BerInputStream in = new BerInputStream(_socket.getInputStream());
response1.decode(in);

但我有一个错误

com.chaosinmotion.asn1.AsnFatalException:

在解码过程中,您的 SEQUENCE 的元素之一(或内部序列/集合的元素)不是可选的并且未初始化!(如果存在)此元素的名称为:com.turkcelltech.jac.Sequence.fillSequenceVariables(Sequence.java:246) 上 com.turkcelltech.jac.Sequence.check_OptionalAndInitialized_Status(Sequence.java:259) 上的 serverString。 jac.Sequence.decode(Sequence.java:105) 在 Client.main(Client.java:54)

4

1 回答 1

0

请联系您正在使用的 ASN.1 工具的供应商。他们应该能够更好地处理使用 ASN.1 工具时出现的错误。每个 ASN.1 供应商编写代码的方式都不同,即使最终结果应该是相同的字节编码流,无论您使用哪种工具。请注意,您没有在此处指明您使用的是哪个 ASN.1 工具。

于 2013-05-21T19:48:41.203 回答