package javacodebook.net.socket.telnetclient; /** * Dieser kleine TelnetClient baut unter Angabe der IP-Addresse und Port-Nummer * eine Verbindung zum jeweiligen host auf. * Über die Konsole könne Strings zum host geschickt werden. Seine Antwort wird * entgegengenommen und auf die Konsole geschrieben. * * Achtung: Damit dieser Client reibungslos funktioniert, muss der host immer * genau eine Zeile zurückschicken. Werden mehr Zeilen zurückgeschickt, werden * alle ausser der ersten ignoriert, wird keine zurückgeschickt, ist der Client * bis auf weiteres geblockt. */ import java.io.*; import java.net.*; public class TCPClient { /** * Variablen der Anwendung */ public static int port = 0; public static String host = null; public static Socket server = null; public static void main(String [] args) throws Exception { try{ // Benutzter-Eingaben werden an einen BuuferedReader // weitergeleitet. BufferedReader userIn=new BufferedReader(new InputStreamReader(System.in)); // Für den Verbindungsaufbau zum Host werden Benutzereingaben benötigt. System.out.println("Mit welchem Rechner wollen Sie verbunden werden:"); host = userIn.readLine(); System.out.println("Auf welchem Port wollen Sie sich anmelden?"); port = Integer.parseInt(userIn.readLine()); // Ein Socket wird erstellt. Hierbei wird eine Verbindung zum // host aufgebaut. Das Socket-Objekt repräsentiert den host. server = new Socket(InetAddress.getByName(host),port); System.out.println("Verbindung zu "+host+" auf Port: "+port+" aufgebaut!"); // Der InputStream vom Socket wird geholt, und an einen BufferedReader // weitergeleitet. So können Servermeldungen leicht ausgelesen werden. BufferedReader serverIn = new BufferedReader( new InputStreamReader(server.getInputStream())); // Ein Printwriter leitet sämtliche Eingaben, an den // Outputstream des Servers weiter, so können, einfach // Meldungen an den Server übertragen werden. PrintWriter serverOut = new PrintWriter(server.getOutputStream(),true); // Benutzer eingabe String command=null; // Antwort vom host String response=null; // Schleife läuft solange bis der Server die Verbindung // unterbricht. do { // Benutzereingabe wird ausgelesen und zum Server geschickt System.out.print("Eingabe: "); command=userIn.readLine(); serverOut.println(command); serverOut.flush(); // Antwort vom Server wird entgegen genommen, und auf die // Konsole geschrieben response=serverIn.readLine(); System.out.println(response); } while(response!=null); } catch(IOException e) { System.out.println("Verbindung zum Server verloren!"); } finally { try { // Socket wird geschlossen server.close(); } catch(IOException e) { System.err.println(e); } } } }