Apache MINA рдЬрд╛рд╡рд╛ рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд░реНрд╡рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдУрдкрди рд╕реЛрд░реНрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИред рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг - 2.0.4 - 14 рдЬреВрди, 2011 рдХреЛ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕рд░рд▓ рд╕рд░реНрд╡рд░ рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ред
рд╣рдо рдХреНрдпрд╛ рд▓рд┐рдЦ тАЛтАЛрд░рд╣реЗ рд╣реИрдВ?
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╕рд░реНрд╡рд░ рд▓рд┐рдЦреЗрдВрдЧреЗ рдЬрд┐рд╕рд╕реЗ рдЖрдк рдЯреЗрд▓рдиреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдиреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╕рдордп, рд╕рд░реНрд╡рд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд╢реБрднрдХрд╛рдордирд╛ рджреЗрдЧрд╛,
рд╕рдордп рдХрдорд╛рдВрдб рдкрд░ рдпрд╣ рдХрд╣реЗрдЧрд╛ рдХрд┐ рдХрдиреЗрдХреНрд╢рди рдХреЗ рдмрд╛рдж рдХрд┐рддрдиреЗ рд╕реЗрдХрдВрдб рдмреАрдд рдЪреБрдХреЗ рд╣реИрдВ, рдФрд░
q рдХрдорд╛рдВрдб рдореЗрдВ рдпрд╣ рдЕрд▓рд╡рд┐рджрд╛ рдХрд╣ рджреЗрдЧрд╛ рдФрд░ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдмрдВрдж рдХрд░ рджреЗрдЧрд╛ред
рддреЛ рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрд╢рди
рдореБрдЦреНрдп
рдореАрдирд╛-рдХреЛрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдХреЛ
slf4j (рдЬрд╛рд╡рд╛ рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдкрд▓ рд▓реЙрдЧрд┐рдВрдЧ рдлреИрдХреЗрдб) рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рднреА рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ MINA рд╡рд┐рднрд┐рдиреНрди рд▓реЙрдЧрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Apache log4jред рдХрдиреЗрдХреНрдЯ рдХреЛ
slf4j-api рдФрд░ рд▓реЙрдЧрд┐рдВрдЧ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд╕реЗ рдПрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд▓реЙрдЧрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдЗрд╕рд▓рд┐рдП, рдЖрдк
slf4j-nop рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдВрдЯреНрд░реА рдкреЙрдЗрдВрдЯ рдФрд░ IoAcceptor
рдореБрдЦреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдзрд┐ рдореЗрдВ, рд╣рдореЗрдВ рдПрдХ
IoAceptor - рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬреЛ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдХрдиреЗрдХреНрд╢рдиреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдЧрд╛ред рд╣рдореЗрдВ рдЗрд╕рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрд░реАрдХреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА (
IoAcceptor IoService рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдХреБрдЫ рддрд░реАрдХреЗ рдШреЛрд╖рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ):
DefaultIoFilterChainBuilder getFilterChain()
- рддрдерд╛рдХрдерд┐рдд "рдлрд╝рд┐рд▓реНрдЯрд░ рд╢реНрд░реГрдВрдЦрд▓рд╛" рд▓реМрдЯрд╛рддрд╛ рд╣реИ; void setHandler(IoHandler handler)
- рд╣реИрдВрдбрд▓рд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ - рд╡рд╣ рд╡рд╕реНрддреБ рдЬрд┐рд╕рдореЗрдВ рд╕рд░реНрд╡рд░ рдХрд╛ рдореБрдЦреНрдп рддрд░реНрдХ рд╕реНрдерд┐рдд рд╣реИ; void bind(SocketAddress localAddress)
- рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрддреЗ рдкрд░ рд╕реБрдирдирд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред
рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
NioSocketAcceptor , рдЬреЛ рдХрд┐ TCP / IP рдХреЗ рд▓рд┐рдП
IoAceptor рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ,
рдЙрдкрдпреБрдХреНрдд рд╣реИ ред
рдлрд╝рд┐рд▓реНрдЯрд░ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдФрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓
рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╕рднреА рдШрдЯрдирд╛рдУрдВ (рдПрдХ рдХрдиреЗрдХреНрд╢рди рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛, рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛, рдЖрджрд┐) рддрдерд╛рдХрдерд┐рдд "рдлрд┐рд▓реНрдЯрд░ рд╢реНрд░реГрдВрдЦрд▓рд╛" рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рддреЗ рд╣реИрдВред рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рд╕реА рднреА рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╣рд╛рдВ рдмрд╣реБрдд рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИ - рд▓реЙрдЧрд┐рдВрдЧ, рдЖрджрд┐ред
рдЕрд▓рдЧ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рд▓рд╛рдпрдХ рдлрд┐рд▓реНрдЯрд░ рдореЗрдВ рд╕реЗ рдПрдХ
рдкреНрд░реЛрдЯреЛрдХреЙрд▓рдХреЛрдбреЗрдХрдлрд┐рд▓реНрдЯрд░ рд╣реИ ред рдЗрд╕ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдХреЗ рджреМрд░рд╛рди рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рд╣реИ рдФрд░ рд░рд┐рд╕реЗрдкреНрд╢рди рдкрд░ рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдЕрдиреБрдХреНрд░рдо рд╕реЗ рдПрдХ рд╕рдЬрд╛рдпрд╛ рд╡рд╕реНрддреБ рд╣реИред рдлрд╝рд┐рд▓реНрдЯрд░ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
ProtocolCodecFilter(ProtocolCodecFactory factory)
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ "рдХрд╛рд░рдЦрд╛рдиреЗ", рдореЗрд░реЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдкрд░ рд╕реНрдкрд░реНрд╢ рдирд╣реАрдВ рдХрд░реВрдБрдЧрд╛, рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП MINA рдореЗрдВ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдореЗрдВ рд╕реЗ рдПрдХ рдЙрдкрдпреБрдХреНрдд рд╣реИ - TextLine ("factory" -
TextLineCodecFactory ), рдЬреЛ рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдПрдХ рдХреНрд░рдо рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ (
рд╕реНрдЯреНрд░рд┐рдВрдЧ ) рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИред ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрдм рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд▓рд╛рдЗрди рдЯрд░реНрдорд┐рдиреЗрдЯрд░ рдХреЛ рдЬреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░, рд▓рд╛рдЗрди рдХреЛ "рдлрд┐рд▓реНрдЯрд░ рдЪреЗрди" рдпрд╛ рд╣реИрдВрдбрд▓рд░ рдХреЗ рд╕рд╛рде рд╣реА рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рдПрдХ рд╣реА рд▓рд╛рдЗрди рдЯрд░реНрдорд┐рдиреЗрдЯрд░ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдФрд░ рд▓рд╛рдЗрди рд╡рд░реНрдг рдХрд╛ рдЕрдВрдд рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
TextLineCodecFactory(Charset charset, String encodingDelimiter, String decodingDelimiter)
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣реИрдВрдбрд▓рд░ рдХреЛ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ (
рд╕реНрдЯреНрд░рд┐рдВрдЧ ) рдореЗрдВ, рд╕рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╡рд╕реНрддреБрдУрдВ рд╕реЗ рдирд┐рдкрдЯрдирд╛ рд╣реЛрдЧрд╛ред
DefaultIoFilterChainBuilder рд╡рд╕реНрддреБ рдореЗрдВ рдлрд┐рд▓реНрдЯрд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
void addLast(String name, IoFilter filter)
рдпрд╣ рд╡рд┐рдзрд┐ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдЕрдВрдд рдореЗрдВ рдПрдХ рдлрд┐рд▓реНрдЯрд░ рдЬреЛрдбрд╝рддреА рд╣реИред
рддреЛ рдЕрдм рд╣рдо
рдореБрдЦреНрдп рд╡рд┐рдзрд┐ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:
public static void main(String[] args) throws IOException { IoAcceptor acceptor = new NioSocketAcceptor(); acceptor.getFilterChain().addLast("codec", new ProtocolCodecFilter(new TextLineCodecFactory(Charset.defaultCharset(), System.lineSeparator(), System.lineSeparator()))); acceptor.setHandler(new MyMinaServerHandler()); acceptor.bind(new InetSocketAddress(12345)); }
рд╣реИрдВрдбрд▓рд░, IoHandler рдФрд░ IoSession
рдПрдХ рд╣реИрдВрдбрд▓рд░
IoHandler рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдзрд┐рдпрд╛рдБ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
void sessionCreated(IoSession session)
- рдЬрдм рдПрдХ рдХрдиреЗрдХреНрд╢рди рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ; void sessionOpened(IoSession session)
- рд╕рддреНрд░ рдХреЗ рдмрд╛рдж рдмреБрд▓рд╛рдпрд╛; void sessionClosed(IoSession session)
- рдХрдиреЗрдХреНрд╢рди рдмрдВрдж рд╣реЛрдиреЗ рдкрд░ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ; void sessionIdle(IoSession session, IdleStatus status)
- рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдирд┐рд╖реНрдХреНрд░рд┐рдп (рдЯрд╛рдЗрдордЖрдЙрдЯ рджреНрд╡рд╛рд░рд╛); void messageReceived(IoSession session, Object message)
- рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ рдмреБрд▓рд╛рдпрд╛; void messageSent(IoSession session, Object message)
- рдбреЗрдЯрд╛ рднреЗрдЬрддреЗ рд╕рдордп рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ; void exceptionCaught(IoSession session, Throwable cause)
- рдЕрдкрд╡рд╛рдж рд╣реЛрдиреЗ рдкрд░ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпрд╣ рдХреЗрд╡рд▓ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ -
sessionOpened рдФрд░
messageReceived , рдЗрд╕рд▓рд┐рдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд╕реАрдзреЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо
IoHandlerAdapter рд╡рд░реНрдЧ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдПрдХ рдЦрд╛рд▓реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ, рдФрд░ рд╣рдореЗрдВ рдЙрди рддрд░реАрдХреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рдирдХреА рд╣рдореЗрдВ рдЬрд╝рд░реВрд░рдд рд╣реИред
IoSession рдСрдмреНрдЬреЗрдХреНрдЯ рдПрдХ рд╕рддреНрд░ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╣реИ (рдпрд╣ рдПрдХ рдХрдиреЗрдХреНрд╢рди рднреА рд╣реИ)ред рд╣рдореЗрдВ рдЗрд╕рдХреЗ рдХреБрдЫ рддрд░реАрдХреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:
IoSession рд╣рдореЗрдВ рдХрдиреЗрдХреНрд╢рди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдбреЗрдЯрд╛ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреА рднреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░ рд╣рдо рдХрдиреЗрдХреНрд╢рди рдХреЗ рд╕рдордп рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдЕрд╡рд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рджреЛ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ:
рддреЛ, рдЕрдм рд╣рдо рдПрдХ рд╣реИрдВрдбрд▓рд░ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:
public class MyMinaServerHandler extends IoHandlerAdapter { public void sessionOpened(IoSession session) { session.setAttribute("time", System.currentTimeMillis()); session.write("Hello!"); } public void messageReceived(IoSession session, Object message) { switch (((String) message).trim()) { case "time": session.write(String.format("You connected %d seconds ago", (System.currentTimeMillis() - (Long) session.getAttribute("time")) / 1000)); break; case "q": session.write("Bye!"); session.close(false); break; } } }
рд╡рд╣ рд╕рдм
рд╣реМрд╕рд▓реЗ рд╕реЗ рдЗрдХрдЯреНрдареЗ рд╕рд░реНрд╡рд░ рдХреЛ рдЪрд▓рд╛рдПрдВ рдФрд░ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдпрд╛ рдЯрд░реНрдорд┐рдирд▓ рдкрд░ рд▓рд┐рдЦреЗрдВ:
telnet localhost 12345
рд╕рд░реНрд╡рд░ рдЖрджреЗрд╢реЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрддрд╛ рд╣реИ:
Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. Hello! time You connected 11 seconds ago q Bye! Connection closed by foreign host.
рдкреВрд░реНрдг рд╕реНрд░реЛрдд рдХреЛрдб
рдпрд╣рд╛рдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ ред
рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!