最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SNMP4J服務(wù)端連接超時問題解決方案

 更新時間:2020年10月20日 11:57:00   作者:cuisuqiang  
這篇文章主要介紹了SNMP4J服務(wù)端連接超時問題解決方案,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

我們的網(wǎng)絡(luò)管理中心作為管理中心,是服務(wù)端!各個被管設(shè)備通過交換機作為客戶端與網(wǎng)管中心進行通信,使用的TCP/IP協(xié)議!

SNMP只是一種協(xié)議包,SNMP4J作為SNMP使用的Java工具包,提供了方便安全的工具包功能!

但是在使用中發(fā)現(xiàn)一個問題就是,服務(wù)端與客戶端發(fā)送消息時,發(fā)送數(shù)次后就不再發(fā)送數(shù)據(jù)了!網(wǎng)絡(luò)抓包也抓不到,跟蹤斷點到SNMP4J的代碼中發(fā)現(xiàn)了這樣一個問題!

	/**
	 * Sends a SNMP message to the supplied address.
	 * 
	 * @param address
	 *      an <code>TcpAddress</code>. A
	 *      <code>ClassCastException</code> is thrown if
	 *      <code>address</code> is not a <code>TcpAddress</code>
	 *      instance.
	 * @param message
	 *      byte[] the message to sent.
	 * @throws IOException
	 */
	public void sendMessage(Address address, byte[] message)
			throws java.io.IOException {
		if (server == null) {
			listen();
		}
		serverThread.sendMessage(address, message);
	}

我們可以看到,他與UDP的不同是,使用了一個服務(wù)的線程!

	public void sendMessage(Address address, byte[] message)
			throws java.io.IOException {
		Socket s = null;
		SocketEntry entry = (SocketEntry) sockets.get(address);
		if (logger.isDebugEnabled()) {
			logger.debug("Looking up connection for destination '"
					+ address + "' returned: " + entry);
			logger.debug(sockets.toString());
		}
		if (entry != null) {
			s = entry.getSocket();
		}
		if ((s == null) || (s.isClosed()) || (!s.isConnected())) {
			if (logger.isDebugEnabled()) {
				logger.debug("Socket for address '" + address
						+ "' is closed, opening it...");
			}
			pending.remove(entry);
			SocketChannel sc = null;
			try {
				// Open the channel, set it to non-blocking, initiate
				// connect
				sc = SocketChannel.open();
				sc.configureBlocking(false);
				sc
						.connect(new InetSocketAddress(
								((TcpAddress) address).getInetAddress(),
								((TcpAddress) address).getPort()));
				s = sc.socket();
				entry = new SocketEntry((TcpAddress) address, s);
				entry.addMessage(message);
				sockets.put(address, entry);
	
				synchronized (pending) {
					pending.add(entry);
				}
	
				selector.wakeup();
				logger.debug("Trying to connect to " + address);
			} catch (IOException iox) {
				logger.error(iox);
				throw iox;
			}
		} else {
			entry.addMessage(message);
			synchronized (pending) {
				pending.add(entry);
			}
			selector.wakeup();
		}
	}

他從一個Map中去獲得連接 SocketEntry ,然后得到連接對象Socket!

判斷Socket是否有效,有效則直接發(fā)送,無效則創(chuàng)建連接后再發(fā)送!

然后我找到這樣一段代碼

private synchronized void timeoutSocket(SocketEntry entry) { 
  if (connectionTimeout > 0) { 
    socketCleaner.schedule(new SocketTimeout(entry), connectionTimeout); 
  } 
} 

也就是說服務(wù)端會自己檢查的連接并且去清除他!

我嘗試設(shè)置 connectionTimeout 的值

private void init() throws UnknownHostException, IOException { 
  threadPool = ThreadPool.create("Trap", 2); 
  dispatcher = new MultiThreadedMessageDispatcher(threadPool,new MessageDispatcherImpl()); 
  // 本地IP與監(jiān)聽端口 
  listenAddress = GenericAddress.parse(System.getProperty("snmp4j.listenAddress", "tcp:192.168.9.69/5055")); 
  DefaultTcpTransportMapping transport; 
  transport = new DefaultTcpTransportMapping((TcpAddress) listenAddress); 
  transport.setConnectionTimeout(0); 
  snmp = new Snmp(dispatcher, transport); 
  snmp.getMessageDispatcher().addMessageProcessingModel(new MPv1()); 
  snmp.getMessageDispatcher().addMessageProcessingModel(new MPv2c()); 
  snmp.getMessageDispatcher().addMessageProcessingModel(new MPv3()); 
  USM usm = new USM(SecurityProtocols.getInstance(), new OctetString(MPv3.createLocalEngineID()), 0); 
  SecurityModels.getInstance().addSecurityModel(usm); 
  snmp.listen(); 
} 

增加一行代碼 設(shè)置DefaultTcpTransportMapping的超時時間是 0 !

然后就沒有問題了!

雖然臨時解決了問題,但是由于對SNMP4J不夠深入了解,我怕問題恐怕不是這樣的!

我在此也希望使用SNMP4J為工具,且作為服務(wù)端,在發(fā)送數(shù)據(jù)時有問題的解決方法!

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 解決服務(wù)器運行jupyter notebook方法

    解決服務(wù)器運行jupyter notebook方法

    這篇文章主要介紹了解決服務(wù)器運行jupyter notebook方法,來幫助大家實現(xiàn)服務(wù)器跑Jupyter,附含圖文以及詳細代碼,有需要的朋友可以借鑒參考下
    2021-08-08
  • Spark的廣播變量和累加器使用方法代碼示例

    Spark的廣播變量和累加器使用方法代碼示例

    這篇文章主要介紹了Spark的廣播變量和累加器使用方法代碼示例,文中介紹了廣播變量和累加器的含義,然后通過實例演示了其用法,需要的朋友可以參考下。
    2017-09-09
  • 詳解微服務(wù)架構(gòu)及其演進史

    詳解微服務(wù)架構(gòu)及其演進史

    在很多項目的業(yè)務(wù)初期階段,高速迭代上線是首要考慮的事情,對后期的容量預(yù)估、可擴展性和系統(tǒng)健壯性、高可用一般沒有那么重視。但隨著業(yè)務(wù)的發(fā)展,用戶量、請求量的暴增發(fā)現(xiàn)原來的單體系統(tǒng)已經(jīng)遠遠不滿足需求了,特別是隨著互聯(lián)網(wǎng)整體的高速發(fā)展,對系統(tǒng)的要求越來越高
    2022-01-01
  • RedHat9配置轉(zhuǎn)發(fā)DNS服務(wù)器的實現(xiàn)

    RedHat9配置轉(zhuǎn)發(fā)DNS服務(wù)器的實現(xiàn)

    本文主要介紹了RedHat9配置轉(zhuǎn)發(fā)DNS服務(wù)器的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05
  • 基于Nexus實現(xiàn)配置阿里云代理倉庫過程解析

    基于Nexus實現(xiàn)配置阿里云代理倉庫過程解析

    這篇文章主要介紹了基于Nexus實現(xiàn)配置阿里云代理倉庫過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07
  • cwRsync提示password file must be owned by root when running as root的解決方法

    cwRsync提示password file must be owned by root when running as

    今天在配置服務(wù)器的時候,用了rsync4.10版本,客戶端是2003服務(wù)器端是2008 r2 同步的時候提示password file must be owned by root when running as root問題,以前用老版本的時候沒見過,還好看了下面的文章解決了,特分享下
    2015-08-08
  • 使用命令遠程注銷服務(wù)器的方法

    使用命令遠程注銷服務(wù)器的方法

    這篇文章主要介紹了使用命令遠程注銷服務(wù)器的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2006-11-11
  • Apache Hudi數(shù)據(jù)布局黑科技降低一半查詢時間

    Apache Hudi數(shù)據(jù)布局黑科技降低一半查詢時間

    這篇文章主要介紹了Apache Hudi數(shù)據(jù)布局黑科技幫你降低一半查詢時間,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪
    2022-03-03
  • rsync同步數(shù)據(jù)時提示password file must not be other-accessible的解決方法

    rsync同步數(shù)據(jù)時提示password file must not be&nb

    今天服務(wù)器同步數(shù)據(jù)的時候,突然有個命令提示這個錯誤,但其它的機器又正常,很奇怪,不過通過下面的命令執(zhí)行以下就可以了,windows與linux操作方法一致
    2024-06-06
  • 近期服務(wù)器出現(xiàn)的安全問題以及防范措施2017.05

    近期服務(wù)器出現(xiàn)的安全問題以及防范措施2017.05

    近期接到idc商的反饋,最近很多使用windows的主機都被拿下控制權(quán),直接修改iis等
    2017-08-08

最新評論

内江市| 正宁县| 遂平县| 宁河县| 遵义县| 吉林省| 寿宁县| 通州市| 福建省| 咸阳市| 兴仁县| 丹寨县| 从化市| 当涂县| 潜江市| 嘉黎县| 乌苏市| 泰来县| 广东省| 连州市| 隆安县| 宁阳县| 钟祥市| 洛宁县| 女性| 隆回县| 类乌齐县| 光山县| 宜黄县| 正阳县| 文山县| 福贡县| 香港 | 海原县| 太保市| 贵定县| 娱乐| 铜梁县| 苍溪县| 通江县| 五河县|