praxis der internet-programmierung http streams sockets java xml apache

Post on 06-Apr-2015

116 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Praxis der Internet-Programmierung

Http

Streams

SocketsJAVA XML

APACHE

Hypertext Transfer Protocol

WebConversation wc = new WebConversation();

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

WebResponse resp = wc.getResponse( req );

REQUEST RESPONSE

Client Server

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)

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/

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

Repetition Java Streams

write()

Unicode Stream

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

BufferedReader

FileReader

Anwendung

BufferedReader

InputStreamReader(System.in)

Java Anwendung

GZIPOutputStream

FileOutputStream

BufferedOutputStream

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

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

Socket

Socket = Endpunkt einer Verbindung zwischen zwei Computern

C1

C2

Socket

TCP / UDP

IP

Ethernet

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

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

Client Socket

4. KommunizierenString str = in.readLine();

out.println(‘meine Meldung‘);

5. Verbindung trennensocket.close();

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

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

Multi Socket ServerKlassen Modellierung

multi_echoserver

PORT = 8131main()

Thread

one_echoserver

one_echoserver(socket)run()

1..20

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

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

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

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.

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

top related