2017-12-06 10 views
0

私はSNMP4Jを使用しており、SNMPトラップからカンマ区切り文字列を出力しています。特定の要素をカンマ区切りの文字列バッファに表示

すなわち

StringBuffer msg = new StringBuffer(); 
msg.append(event.toString()); 
Vector<? extends VariableBinding> varBinds = event.getPDU().getVariableBindings(); 
if (varBinds != null && !varBinds.isEmpty()) { 
    Iterator<? extends VariableBinding> varIter = varBinds.iterator(); 
    while (varIter.hasNext()) { 
     VariableBinding var = varIter.next(); 
     msg.append(var.toString()).append(";"); 
    } 
} 
System.out.println("Message Received: " + msg.toString()); 

出力 -

Message Received: CommandResponderEvent[securityModel=1, securityLevel=1, maxSizeResponsePDU=65535, etc etc 

と同様に、私は(特定の要素を表示する必要が全体出力列特に

peerAddress=192.168.150.210/61263 

VBS[1.3.6.1.4.1.332.10.14.19.11.0 = Fire]] 

だけ理想的にIPアドレスの一部(192.168.150.210)と「意味」(火)は

私は特定の要素を見つけるために、分割を使用し、それらまたはより良い方法があるのサブストリングのですか?

String sixth_word = msg.toString().split(",")[6]; 
+0

イベントの[getPeerAddress](http://www.snmp4j.org/ doc/org/snmp4j/CommandResponderEvent.html#getPeerAddress())メソッド、および[変数](http://www.snmp4j.org/doc/org/snmp4j/smi/Variable.html)およびそのサブクラスのメソッド、直接データを取得するには? – VGR

+0

こんにちはVGR、私は文字列と個々の要素の両方を必要とする、私はどのようにgetPeerAddress(私は初心者です)と言う呼び出し方法を拡張することができます。ありがとうございました – Active

答えて

0

あなたはString.join持っているので、あなたは、StringBufferの必要はありません。個人的に

String msg = event + " " + String.join(";", event.getPDU().getVariableBindings()); 

を診断メッセージのために、私もString.joinと気にしないだろう、:

String msg = event + " " + event.getPDU().getVariableBindings(); 

使用しているクラスのドキュメントを読むことは、利用可能なものを表示するための道のりになります。あなたがthe documentation for CommandResponderEventを読めば、あなたはそれはあなたが望むデータを提供するパブリックメソッドがありわかりますdocumentation of VariableBindingを見て

String peerAddress = event.getPeerAddress().toString(); 

を、我々はそれがgetVariable()メソッドを持っていることがわかります。 「火」のテキストはどこから来るのか、それぞれの結合変数は以下のとおりです。あなただけ呼び出すことができるのに、なぜあなたは、文字列の情報を配置している

List<String> variables = new ArrayList<>(); 
for (VariableBinding binding : event.getPDU().getVariableBindings()) { 
    variables.add(String.valueOf(binding.getVariable())); 
} 
+0

ありがとうVGR、私はPeerAddressを取得する方法を発見したが、変数は何か、getVariableメソッドにいくつかの構文エラーがあるようです。 – Active

+0

SNMP4Jがインストールされていないので、現時点でコードをコンパイルできません。おそらく、あなたが見ているエラーを詳しく説明することができますか? – VGR

+0

とArrayList <>の周りに山形が表示されていますが、正しいかどうかわからない場合はシンボルArrayList – Active

関連する問題