package socket4;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;

/**
 * Verbinden mit einem Host und Port und lauschen, was an Infos zurueckgeliefert wird,
 * ohne Daten dorthin zu schicken.
 * 
 * @author  Ralf Kunze (rkunze@uos.de), Institut fuer Informatik, Universitaet Osnabrueck
 * @date 06.06.2007
 */
public class SocketTest {

    public static void main(String[] args) {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String hostname = null;
        int port = 0;
        
        // Daten einlesen
        try {
            System.out.print("Bitte geben sie einen Hostname ein: ");
            hostname = br.readLine();
            
            System.out.print("Bitte geben sie einen Port ein: ");
            port = Integer.parseInt(br.readLine());
        } catch (IOException e1) {
            System.err.println("Could not read from stdin. Bye!");
            System.exit(1);
        } catch(NumberFormatException e2) {
            System.out.println("Port is not a valid number!");
            System.exit(1);
        }

        try {
            // Socket socket = new Socket(InetAddress.getByName(hostname), port);

            // Verbinung aufbauen
            Socket socket = new Socket(hostname, port);
            System.out.println(socket);
            
            // Stream beschaffen
            InputStream in = socket.getInputStream();
            
            // Lesen, bis EOF und Gelesenes ausgeben
            int len = 0;
            byte[] b = new byte[1024];
            while((len=in.read(b))!=-1) {
                System.out.write(b,0,len);
            }
            in.close();
            socket.close();
            
        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}
