打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
snmp协议中pdu转发后源ip地址丢失问题,请教

问题描述:
  三台服务器分别为:serverA(ipA,portA)、serverB(ipB,portB)、serverC(ipC、portC).
  从serverA上发一个pdu到serverB上,serverB接收到serverA发来的pdu后直接转发给serverC,
  serverC接收到来自serverB发来的pdu后发现其ip地址不是serverA的地址ipA,而是serverB的地址ipB,
  这样就导致pdu的源地址丢失了。
  (丢失的ip地址是指event.getPeerAddress。event是processPdu(CommandResponderEvent event)方法中的参数,
  processPdu(CommandResponderEvent event)方法属于SNMP4J.jar包中CommandResponder接口) 
 

*******serverB的代码如下:*******
/**
* serverB服务代码。
*
* 实现CommandResponder的processPdu方法, 用于接收传入的PDU,然后转发到目标serverC去
* 当接收到pdu时,会自动进入这个方法。
*
* @param respEvnt
*/
public void processPdu(CommandResponderEvent event) {
//下面从event中取出来的ip是:谁给他发的pud,这ip地址就是谁的。
//这样就出问题了,从serverA到serverC,pdu经过serverB的转发,
//最后得到的ip地址成了serverB的了,把源ip地址ipA给丢了.
//请看看怎么处理才能保证不丢失ipA这个源地址。
String ip = event.getPeerAddress().toString();


// 设置 target(也就是serverC)
CommunityTarget target = new CommunityTarget();
//目标地址,也就是serverC的地址
Address targetAddress = new org.snmp4j.smi.UdpAddress(java.net.InetAddress
.getByName(ipC), portC);
target.setAddress(targetAddress);
// 通信不成功时的重试次数
target.setRetries(2);
// 超时时间
target.setTimeout(1500);
// snmp版本
target.setVersion(SnmpConstants.version2c);

// 接收到来自serverA的pdu,转发到目标serverC去
PDU pdu = event.getPDU();
TransportMapping sendTransport = new DefaultUdpTransportMapping();
Snmp sendSnmp = new Snmp(sendTransport);
sendTransport.listen();
sendSnmp.send(pdu, target);

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
SNMPc 全攻略
SNMP v1,v2,v3 的比较
SNMP从入门到开发:基础篇
使用snmp4j实现Snmp功能(二)
SNMP:简单网络管理协议
浅谈 Linux 系统中的 SNMP Trap
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服