亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

mina inputClosed()方法不斷調用

mina inputClosed()方法不斷調用

慕少5122734 2016-11-14 21:27:34
在學習mina框架時我重寫了public void inputClosed(IoSession is) 方法然后我在關閉客戶端連接時出現了這個方法的不斷調用 下面是我的代碼,請問有人遇到過嗎package?mina; import?org.apache.mina.core.service.IoHandler; import?org.apache.mina.core.session.IdleStatus; import?org.apache.mina.core.session.IoSession; class?MyHandler?implements?IoHandler?{ ????public?MyHandler()?{ ????} ????@Override ????public?void?sessionCreated(IoSession?is)?throws?Exception?{ ????????System.out.println("create"); ????} ????@Override ????public?void?sessionOpened(IoSession?is)?throws?Exception?{ ????????System.out.println("opensession"); ????} ????@Override ????public?void?sessionClosed(IoSession?is)?throws?Exception?{ ????????System.out.println("session?close"); ????} ????@Override ????public?void?sessionIdle(IoSession?is,?IdleStatus?is1)?throws?Exception?{ ????????System.out.println("session?idle"); ????} ???? ???? ????@Override ????public?void?exceptionCaught(IoSession?is,?Throwable?thrwbl)?throws?Exception?{ ????????System.out.println("except"); ????} ????@Override ????public?void?messageReceived(IoSession?is,?Object?o)?throws?Exception?{ ???????? ????????System.out.println("msg?rec"+(String)o); ????????is.write((String)o); ????} ????@Override ????public?void?messageSent(IoSession?is,?Object?o)?throws?Exception?{ ????????System.out.println("msg?sent"); ????} ????@Override ????public?void?inputClosed(IoSession?is)?throws?Exception?{ ????????System.out.println("close"); ????} ???? }package?mina; import?java.io.IOException; import?java.net.InetSocketAddress; import?java.util.logging.Level; import?java.util.logging.Logger; import?org.apache.mina.filter.codec.ProtocolCodecFilter; import?org.apache.mina.filter.codec.textline.TextLineCodecFactory; import?org.apache.mina.transport.socket.nio.NioSocketAcceptor; public?class?SocketServer?{ ????public?static?void?main(String[]?args)?{ ????????try?{ ????????????NioSocketAcceptor?accepter?=new?NioSocketAcceptor(); ????????????accepter.setHandler(new?MyHandler()); ????????????accepter.getFilterChain().addLast("codec",?new?ProtocolCodecFilter(?new?TextLineCodecFactory())); ????????????accepter.bind(new?InetSocketAddress(9427)); ????????}?catch?(IOException?ex)?{ ????????????Logger.getLogger(SocketServer.class.getName()).log(Level.SEVERE,?null,?ex); ????????} ????} }package?ps.mc.chartT; import?java.io.BufferedReader; import?java.io.BufferedWriter; import?java.io.IOException; import?java.io.InputStreamReader; import?java.io.OutputStreamWriter; import?java.net.Socket; import?java.util.logging.Level; import?java.util.logging.Logger; public?class?SocketClient?{ ????public?static?void?main(String[]?args)?{ ???? Socket?socket=null; ???? BufferedReader?inputReader=null; ????????BufferedWriter?outputWriter=null; ????????try?{ ????????????socket?=new?Socket("127.0.0.1",9427); ????????????inputReader?=new?BufferedReader(new?InputStreamReader(System.in)); ????????????outputWriter?=new?BufferedWriter(new?OutputStreamWriter(socket.getOutputStream())); ????????????String?content; ????????????while(!(content=inputReader.readLine()).equals("bye")){ ????????????????outputWriter.write(content+"\n"); ????????????????outputWriter.flush(); ????????????} ????????}?catch?(IOException?ex)?{ ????????????Logger.getLogger(SocketClient.class.getName()).log(Level.SEVERE,?null,?ex); ????????}finally{ ???????? try?{ inputReader.close(); outputWriter.close(); socket.close(); }?catch?(IOException?e)?{ //?TODO?自動生成的?catch?塊 e.printStackTrace(); } ???????? ????????} ????} }
查看完整描述

3 回答

?
慕UI4579374

TA貢獻1條經驗 獲得超0個贊

@Override

public void inputClosed(IoSession session) throws Exception {

session.closeNow();

}


將session 關閉就可以了。


查看完整回答
反對 回復 2019-04-12
  • 慕UI4579374
    慕UI4579374
    建議 handler 還是繼承自IoHandlerAdapter 不關心的一些接口還是采用默認實現,只關注自己的業務接口
?
慕數據1388444

TA貢獻1條經驗 獲得超0個贊

這個問題有沒有實際解決? 看源碼是因為select一直認為是需要處理狀態。 ?尚未找到很好的解決辦法。

查看完整回答
反對 回復 2017-06-21
?
_不名_

TA貢獻1條經驗 獲得超0個贊

更改過濾規則就好了
查看完整回答
反對 回復 2017-01-13
  • 3 回答
  • 1 關注
  • 5091 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號