我尝试使用此代码发送和接收带有ASN.1生成类的Integer
客户端发送整数:
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的一个元素(或内部序列/集合的元素)不是可选的,也不是初始化的! (如果存在)此元素的名称是:serverString at com.turkcelltech.jac.Sequence.check_OptionalAndInitialized_Status(Sequence.java:259) 在 com.turkcelltech.jac.Sequence.fillSequenceVariables(Sequence.java:246) 在com.turkcelltech.jac.Sequence.decode(Sequence.java:105)at Client.main(Client.java:54)
答案 0 :(得分:0)
请与您使用的ASN.1工具的供应商联系。他们应该能够更好地处理使用ASN.1工具时的错误。每个ASN.1供应商都会以不同方式编写代码,即使最终结果应该是相同的编码字节流,无论您使用哪种工具。请注意,您尚未在此处指出您正在使用的ASN.1工具。