2013-05-20 51 views
0

我想這個代碼用ASN.1生成的類使用一個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和一個字符串

服務器發送一個整數和字符串

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.check_OptionalAndInitialized_Status(Sequence.java:259) serverString在 com.turkcelltech.jac.Sequence.fillSequenceVariables(Sequence.java:246) 在com.turkcelltech.jac.Sequence.decode(Sequence.java:105)在 Client.main(Client.java:54)

回答

0

請聯繫ASN.1工具的供應商,你正在使用。他們應該能夠更好地處理如何使用ASN.1工具的錯誤。每個ASN.1供應商都編寫代碼,即使最終結果應該是相同的編碼字節流,無論您使用的是哪種工具。請注意,您並未在此處指明您正在使用哪個ASN.1工具。