/* * Copyright 2015 Julien Viet * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package examples.telnet; import io.termd.core.telnet.Option; import io.termd.core.telnet.TelnetConnection; import io.termd.core.telnet.TelnetHandler; import io.termd.core.telnet.netty.NettyTelnetBootstrap; import java.util.concurrent.TimeUnit; /** * This examples shows a simple telnet server that negociates a couple of options. */ public class TelnetExample { public synchronized static void main(String[] args) throws Exception { NettyTelnetBootstrap bootstrap = new NettyTelnetBootstrap().setHost("localhost").setPort(4000); bootstrap.start(() -> new TelnetHandler() { @Override protected void onOpen(TelnetConnection conn) { System.out.println("Client connected"); // Negociate window size and terminal type conn.writeDoOption(Option.TERMINAL_TYPE); conn.writeDoOption(Option.NAWS); } @Override protected void onNAWS(boolean naws) { if (naws) { System.out.println("Client will send window size changes"); } else { System.out.println("Client won't send window size changes"); } } @Override protected void onData(byte[] data) { System.out.println("Client sent " + new String(data)); } @Override protected void onSize(int width, int height) { System.out.println("Window resized " + width + height); } @Override protected void onTerminalType(String terminalType) { System.out.println("Client declared its terminal as " + terminalType); } @Override protected void onClose() { System.out.println("Disconnected"); } }).get(10, TimeUnit.SECONDS); System.out.println("Telnet server started on localhost:4000"); TelnetExample.class.wait(); } }