24
Praxis der Internet-Programmierung Http Streams Sockets JAVA XML APACHE

Praxis der Internet-Programmierung Http Streams Sockets JAVA XML APACHE

Embed Size (px)

Citation preview

Page 1: Praxis der Internet-Programmierung Http Streams Sockets JAVA XML APACHE

Praxis der Internet-Programmierung

Http

Streams

SocketsJAVA XML

APACHE

Page 2: Praxis der Internet-Programmierung Http Streams Sockets JAVA XML APACHE

Hypertext Transfer Protocol

WebConversation wc = new WebConversation();

WebRequest req = new GetMethodWebRequest( "http://..." );

WebResponse resp = wc.getResponse( req );

REQUEST RESPONSE

Client Server

Page 3: Praxis der Internet-Programmierung Http Streams Sockets JAVA XML APACHE

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)

Page 4: Praxis der Internet-Programmierung Http Streams Sockets JAVA XML APACHE

RESPONSEHTTP 1.1 200 OK (STATUS CODE, 404 File not found)

Server: Medusa/1.26.4.2Content-Type: text/htmlContent-Length: 136Date: Fri, 26 Oct 2001 12:47:16 GMT

<html><head><title>Test Page</title></head><body>Hallo ….</body><html>

Weiter Informationen: http://www.w3.org/Protocols/

Page 5: Praxis der Internet-Programmierung Http Streams Sockets JAVA XML APACHE

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:passwortBasic 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

Req

uest

Head

er

Page 6: Praxis der Internet-Programmierung Http Streams Sockets JAVA XML APACHE

Repetition Java Streams

write()

Unicode Stream

Byte Stream

Page 7: Praxis der Internet-Programmierung Http Streams Sockets JAVA XML APACHE

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);

BufferedReader

FileReader

Anwendung

Page 8: Praxis der Internet-Programmierung Http Streams Sockets JAVA XML APACHE

BufferedReader

InputStreamReader(System.in)

Java Anwendung

GZIPOutputStream

FileOutputStream

BufferedOutputStream

Page 9: Praxis der Internet-Programmierung Http Streams Sockets JAVA XML APACHE

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(); }}

Console Zip File

Page 10: Praxis der Internet-Programmierung Http Streams Sockets JAVA XML APACHE

Konzept von Sockets

Puffer Puffer

INPUT STREAMOUTPUT STREAM

Abcd sd sf df sd£S$dsf£sdf$dfd$d

IP AdressePort Nummer131.152.85.122:1313

Client Server

Page 11: Praxis der Internet-Programmierung Http Streams Sockets JAVA XML APACHE

Socket

Socket = Endpunkt einer Verbindung zwischen zwei Computern

C1

C2

Socket

TCP / UDP

IP

Ethernet

Page 12: Praxis der Internet-Programmierung Http Streams Sockets JAVA XML APACHE

Java Socket Programmierung

// 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); }

Link: http://www.javaworld.com/javaworld/jw-12-1996/jw-12-sockets_p.html

Page 13: Praxis der Internet-Programmierung Http Streams Sockets JAVA XML APACHE

Client Socket

1. import java.net.*; import java.io.*;

2. Verbindung herstellen:InetAddress addr = InetAddress.getByName("localhost");Socket socket = new Socket(addr, PORT);

3. Input und Output Streams initialisieren.BufferedReader in =new BufferedReader(new

InputStreamReader(socket.getInputStream()));PrintWriter out =new PrintWriter(new BufferedWriter(new

OutputStreamWriter(socket.getOutputStream())),true);

Page 14: Praxis der Internet-Programmierung Http Streams Sockets JAVA XML APACHE

Client Socket

4. KommunizierenString str = in.readLine();

out.println(‘meine Meldung‘);

5. Verbindung trennensocket.close();

Page 15: Praxis der Internet-Programmierung Http Streams Sockets JAVA XML APACHE

Server Socket

1. import java.net.*; import java.io.*;

2. Verbindung ermöglichen:ServerSocket s = new ServerSocket(PORT); try { // wartet auf ein Client Socket socket = s.accept();

3. Input und Output Streams initialisieren.BufferedReader in =new BufferedReader(new

InputStreamReader(socket.getInputStream()));PrintWriter out =new PrintWriter(new BufferedWriter(new

OutputStreamWriter(socket.getOutputStream())),true);

Page 16: Praxis der Internet-Programmierung Http Streams Sockets JAVA XML APACHE

Server Socket

4. Kommunizierenwhile (true) {

String str = in.readLine();

if (str.equals("END")) break;

System.out.println("Echoing: " + str);

out.println(str);

}

5. Verbindung trennensocket.close();

Page 17: Praxis der Internet-Programmierung Http Streams Sockets JAVA XML APACHE

Multi Socket ServerKlassen Modellierung

multi_echoserver

PORT = 8131main()

Thread

one_echoserver

one_echoserver(socket)run()

1..20

Page 18: Praxis der Internet-Programmierung Http Streams Sockets JAVA XML APACHE

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(); try { new one_echoserver(socket); } catch(IOException e) { socket.close();} // Bei Fehler schliessen } } finally { s.close(); }}

Page 19: Praxis der Internet-Programmierung Http Streams Sockets JAVA XML APACHE

Multi Socket Serverclass 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() }

Page 20: Praxis der Internet-Programmierung Http Streams Sockets JAVA XML APACHE

Multi Socket Serverclass 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...");… }

Page 21: Praxis der Internet-Programmierung Http Streams Sockets JAVA XML APACHE

Praktikum

Web Service basierend auf SocketsClient verbindet sich mit Server1. Passwortabfrage vom Server2. Server sendet die aktuelle aktuellen Börsenkurs(oder eine Wetterprognose) aus dem Internet (httpunit)4. Beide schliessen den SocketTip: 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.

Page 22: Praxis der Internet-Programmierung Http Streams Sockets JAVA XML APACHE

Tip & Tricks zum JBuilder

Symbol markieren & Rechte Maustaste

Information über die selektierte Klasse

Page 23: Praxis der Internet-Programmierung Http Streams Sockets JAVA XML APACHE

Tip & Tricks zum JBuilder

Templates

Ctrl-J

Page 24: Praxis der Internet-Programmierung Http Streams Sockets JAVA XML APACHE

Tip & Tricks zum JBuilder

Tastatur Belegung

Ctrl+Space mögliche Klassen oder MethodenCtrl+Shift+Space mögliche ParameterCtrl+Enter springt in die KlasseCtrl+Alt+Space öffnet Klassen BibliothekCtrl+J Code TemplatesCtrl + Shift + I Rechts schieben eines markierten BlocksCtrl + Shift + U Links schieben eines markierten BlocksCtrl + G goto Line