Title: Praxis der Internet-Programmierung
1Praxis der Internet-Programmierung
XML
JAVA
APACHE
2Hypertext Transfer Protocol
- WebConversation wc new WebConversation()
- WebRequest req new GetMethodWebRequest(
"http//..." ) - WebResponse resp wc.getResponse( req )
3REQUEST
- 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)
4RESPONSE
- 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 124716 GMT
- lthtmlgt
- ltheadgt
- lttitlegtTest Pagelt/titlegt
- lt/headgt
- ltbodygt
- Hallo .
- lt/bodygt
- lthtmlgt
- Weiter Informationen http//www.w3.org/Protocols
/
5Wichtige 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 namepasswort
- 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
6Repetition Java Streams
write()
Byte Stream
Unicode Stream
7Einlesen 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
8FileOutputStream
InputStreamReader(System.in)
GZIPOutputStream
BufferedReader
BufferedOutputStream
Java Anwendung
9Console ? 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()
10Konzept von Sockets
Client
Server
IP Adresse Port Nummer 131.152.85.1221313
OUTPUT STREAM
INPUT STREAM
Sdsfsdfdfdd
Abcd sd sf df sd
Puffer
Puffer
11Socket
- Socket Endpunkt einer Verbindung zwischen zwei
Computern
C1
C2
Socket TCP / UDP IP Ethernet
12Java Socket Programmierung
- Link http//www.javaworld.com/javaworld/jw-12-199
6/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)
13Client Socket
- import java.net. import java.io.
- Verbindung herstellen
- InetAddress addr InetAddress.getByName("localhos
t") - 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.getOu
tputStream())),true)
14Client Socket
- Kommunizieren
- String str in.readLine()
- out.println(meine Meldung)
- Verbindung trennen
- socket.close()
15Server 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.getOu
tputStream())),true)
16Server Socket
- Kommunizieren
- while (true)
- String str in.readLine()
- if (str.equals("END")) break
- System.out.println("Echoing " str)
- out.println(str)
-
- Verbindung trennen
- socket.close()
17Multi Socket ServerKlassen Modellierung
Thread
multi_echoserver PORT 8131 main()
1..20
one_echoserver one_echoserver(socket) run()
18Multi 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()
-
19Multi 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()
-
20Multi 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...")
-
-
21Praktikum
- 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.
22Tip Tricks zum JBuilder
- Symbol markieren Rechte Maustaste
- ? Information über die selektierte Klasse
23Tip Tricks zum JBuilder
24Tip Tricks zum JBuilder
CtrlSpace mögliche Klassen oder
Methoden CtrlShiftSpace mögliche
Parameter CtrlEnter springt in die
Klasse CtrlAltSpace öffnet Klassen
Bibliothek CtrlJ Code Templates Ctrl Shift
I Rechts schieben eines markierten
Blocks Ctrl Shift U Links schieben eines
markierten Blocks Ctrl G goto Line