Praxis der Internet-Programmierung Http Streams Sockets JAVA XML APACHE
Hypertext Transfer Protocol Server Client REQUEST RESPONSE WebConversation wc = new WebConversation(); WebRequest req = new GetMethodWebRequest( "http://..." ); WebResponse resp = wc.getResponse( req );
REQUEST GET /index.html HTTP 1.1 Accept: image/gif, image/x-xbitmap, image/jpeg, *.* Accept-Encoding: gzip, deflate Content-Type: text/html User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
RESPONSE HTTP 1.1 200 OK (STATUS CODE, 404 File not found) Server: Medusa/1.26.4.2 Content-Type: text/html Content-Length: 136 Date: Fri, 26 Oct 2001 12:47:16 GMT <html> <head> <title>Test Page</title> </head> <body> Hallo …. </body> Weiter Informationen: http://www.w3.org/Protocols/
Wichtige Header Einträge Accept Unterstützte MIME Typen: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, application/vnd.ms-powerpoint, */* Accept-Encoding Unterstützte Kodierungen: gzip, deflate Accept-Language Unterstützte Sprache: De Authorization Verschlüsselte Identifizierung: name:passwort Basic Z3VnZ2lzYmVyZzpub3NlMg== Connection Unterstützt anhaltende Verbindung, der Client kann mehrere Files über eine Socketverbindung erhalten Keep-Alive User-Agent Mozilla/5.0 (Windows; U; WinNT4.0; en-US; m18) Gecko/20001108 Netscape6/6.0 HTTP Request Header
Repetition Java Streams write() Byte Stream Unicode Stream
Einlesen eines Text Files import java.io.*; public class IOStreamDemo { // Throw exceptions to console: public static void main(String[] args) throws IOException { // Reading input by lines: BufferedReader in = new BufferedReader( new FileReader("tst.tex")); String s, s2 = new String(); while((s = in.readLine())!= null) s2 += s + "\n"; in.close(); System.out.print(s2); FileReader BufferedReader Anwendung
Java Anwendung FileOutputStream InputStreamReader (System.in) GZIPOutputStream BufferedReader BufferedOutputStream Java Anwendung
Console Zip File import java.io.*; import java.util.zip.*; public class streamzip { public static void main(String[] args) throws IOException { BufferedReader in = new BufferedReader( new InputStreamReader(System.in)); BufferedOutputStream out = new BufferedOutputStream( new GZIPOutputStream( new FileOutputStream("test.gz"))); int c; while((c = in.read()) !=46) out.write(c); in.close(); out.close(); }}
Konzept von Sockets Client Server IP Adresse Port Nummer OUTPUT STREAM 131.152.85.122:1313 OUTPUT STREAM INPUT STREAM £S$dsf£sdf$dfd$d Abcd sd sf df sd Puffer Puffer
Socket Socket = Endpunkt einer Verbindung zwischen zwei Computern C1 TCP / UDP IP Ethernet
Java Socket Programmierung Link: http://www.javaworld.com/javaworld/jw-12-1996/jw-12-sockets_p.html // MyClient; try { Socket s_C = new Socket("Machine name", PortNumber); } catch (IOException e) { System.out.println(e); } // MyService; try { ServerSocket s_serv = new ServerSocket(PortNumber); } catch (IOException e) { System.out.println(e); }
Client Socket import java.net.*; import java.io.*; Verbindung herstellen: InetAddress addr = InetAddress.getByName("localhost"); Socket socket = new Socket(addr, PORT); Input und Output Streams initialisieren. BufferedReader in =new BufferedReader(new InputStreamReader(socket.getInputStream())); PrintWriter out =new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
Client Socket Kommunizieren Verbindung trennen String str = in.readLine(); out.println(‘meine Meldung‘); Verbindung trennen socket.close();
Server Socket import java.net.*; import java.io.*; Verbindung ermöglichen: ServerSocket s = new ServerSocket(PORT); try { // wartet auf ein Client Socket socket = s.accept(); Input und Output Streams initialisieren. BufferedReader in =new BufferedReader(new InputStreamReader(socket.getInputStream())); PrintWriter out =new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
Server Socket Kommunizieren Verbindung trennen while (true) { String str = in.readLine(); if (str.equals("END")) break; System.out.println("Echoing: " + str); out.println(str); } Verbindung trennen socket.close();
Multi Socket Server Klassen Modellierung Thread multi_echoserver PORT = 8131 main() 1..20 one_echoserver one_echoserver(socket) run()
Multi Socket Server public static void main(String[] args)throws IOException { ServerSocket s = new ServerSocket(PORT); try { while(true) { // Wartet auf einen Client Socket socket = s.accept(); new one_echoserver(socket); } catch(IOException e) { socket.close();} // Bei Fehler schliessen } } finally { s.close(); }}
Multi Socket Server class one_echoserver extends Thread { private Socket socket; private BufferedReader in; private PrintWriter out; public one_echoserver(Socket s) throws IOException { socket = s; in = new BufferedReader( new InputStreamReader(socket.getInputStream())); out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true); start(); // run() }
Multi Socket Server class one_echoserver … … public void run() { try { while (true) { String str = in.readLine(); if (str.equals("END")) break; System.out.println("Echoing: " + str); out.println(str); } System.out.println("closing...");
Praktikum Web Service basierend auf Sockets Client verbindet sich mit Server Passwortabfrage vom Server Server sendet die aktuelle aktuellen Börsenkurs (oder eine Wetterprognose) aus dem Internet (httpunit) 4. Beide schliessen den Socket Tip: mit ipconfig finden Sie ihre IP-Adresse FürFortgeschritten Java Chat Programm für 2 oder 3 Computer Der in der Vorlesung gezeigt Sourcecode finden Sie auf der Ifi-Homepage.
Tip & Tricks zum JBuilder Symbol markieren & Rechte Maustaste Information über die selektierte Klasse
Tip & Tricks zum JBuilder Templates Ctrl-J
Tip & Tricks zum JBuilder Tastatur Belegung Ctrl+Space mögliche Klassen oder Methoden Ctrl+Shift+Space mögliche Parameter Ctrl+Enter springt in die Klasse Ctrl+Alt+Space öffnet Klassen Bibliothek Ctrl+J Code Templates Ctrl + Shift + I Rechts schieben eines markierten Blocks Ctrl + Shift + U Links schieben eines markierten Blocks Ctrl + G goto Line