Javaprogrammering - Del 3. Trådar. Trådexempel. Trådar Databaskoppling, Exempel för Inl2 Java och nätverk. multitasking. multithreading.

Relevanta dokument
10 Kommunikation i Java

Tung bakgrundsaktivitet t.ex. Aktiva objekt t.ex. Animering, simulering. DD2385 Programutvecklingsteknik Några bilder till föreläsning 9 6/5 2013

Javas Exceptions. DD2385 Programutvecklingsteknik Fler bilder till föreläsning 7 23/ Kort om Javas Exceptions Trådar i Java

Tentamensskrivning Nätverksprogrammering (EDA095 - FED) , kl 8-13

Objektorienterad Programkonstruktion. Föreläsning 10 7 dec 2015

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

DI-institutionen Sid 1 av 5 Hans-Edy Mårtensson Sten Sundin Micael Karlsson

Tentamen Nätverksprogrammering Lösningsförslag

Översikt. Skriva och läsa data. Kontrollflöde. Två sorters loopar. For-loop. For-loop

Datakommunikation och Internet

Surfning. Webbklienter och webbservrar. Specialskrivna webbservrar. Kommunikation med sockets

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin Micael Karlsson

Tentamen Nätverksprogrammering Lösningsförslag

Objektorienterad Programkonstruktion. Föreläsning 11 6 dec 2016

Att skriva till och läsa från terminalfönstret

Klientprogrammering mot databaser

Tentamen Nätverksprogrammering Lösningsförslag

2I1070 Lektion 2 Servlets och databaskopplingar Internetprogrammering 2I1049 Treskiktsarkitektur Klient-server med servlets

Tentamen Nätverksprogrammering Lösningsförslag

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Föreläsning 11 Aktiva objekt och trådar, strömmar, kommunikation DAT043,

Tentamen Nätverksprogrammering Lösningsförslag

Hämta data mha URLer Föreläsning 2b. Innehåll Klassen URL

FÖ 07 - JDBC Åtkomst till databaser från applikationer med Java - exempelkod -

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Transport Layer. Transport Layer. F9 Meddelandesändning med UDP EDA095 Nätverksprogrammering. Java och UDP TCP/UDP

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Föreläsning 1. På klientsidan... Allmänt. På serversidan... Och dessutom... DD1389 Internetprogrammering 6 hp

Concurrency Saker händer samtidigt. Process En instans av ett program

Språkkonventioner och redigering av tal.

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl

Socket-programmering. Programmering för distribution. Klient/server ansatsen. Klient/server ansatsen TCP/IP protokollgrafen Java-programering

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

Undantagshantering. Fördjupad Java. Fel. Undantag. Fånga Undantag. Grupper av Undantag

Undantagshantering. Fördjupad Java. Undantag. Fel. Grupper av Undantag. Fånga Undantag

INTRODUKTION TILL JDBC

Tentamen Nätverksprogrammering Lösningsförslag

F4. programmeringsteknik och Matlab

Javaprogrammering - Del 2. Instans- kontra klassvariabler. Instans- kontra klassmetoder

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Java-programmering. GUI-exempel. WindowTest.java. Händelsestyrt. WindowTestGUI.java (forts) WindowTestGUI.java. GUI UDP TCP Trådar Laboration 2 Tips

F8 Meddelandesändning med UDP

Tentamen ITK:P2. Inga hjälpmedel tillåtna förutom penna och papper. Skriv tydligt och texta gärna. 14 st frågor, 70 poäng.

F5 Meddelandesändning med TCP

Tentamen Nätverksprogrammering Lösningsförslag

Lösningar för tenta 2 DAT043,

Tentamen , Introduktion till Java, dtaa98, dtea53

FÖRSLAG TILL LÖSNINGAR, TENTAMEN I IKB007 INTERNETPROGRAMMERING MED JAVA, 5p för SY2, , kl

Fakulteten för ekonomi, kommunikation och IT. Corba. Datum: Mathias Andersson

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

Fördjupad Java. Undantagshantering. Fel

Föreläsning 5 Meddelandesändning med TCP

F2 Java I/O - strömmar Meddelandesändning med TCP

Tentamen. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal

Föreläsning 5 Meddelandesändning med TCP

TENTAMEN. Objektorienterade applikationer CHALMERS. 2018/2019, lp 3 DAT055. Uno Holmer

Javaprogrammering - Del 1. Kursupplägg. Hello world. Kompilera. Kör. Environmentvariabler. föreläsningar övningar 1, 2, 3 och 4 INLÄMNINGSUPPGIFT 2

Parsing med Recursive Descent, Avbildningsklasser. Syntaxdiagram. Syntaxdiagram och kodning expression. Betrakta följande uttryck

Laboration 24 Databasen MySQL och java

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

JAVAUTVECKLING LEKTION 4

//Använd main som ett "handtag" för att hålla ihop programmet. //Själva programmet finns i övriga klasser.

TDDC77 Objektorienterad Programmering

Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016

Java och nätverk Läsanvisningar Skansholm (med Swing) kapitel 18 Budd kapitel 22

Högskolan Dalarna sid 1 av 5 DI-institutionen Hans-Edy Mårtensson Sten Sundin

2D1342 Programkonstruktion för F1, ht 2006

Tentamensskrivning Nätverksprogrammering (EDA095) , kl 8-13

Undantag. Engelska: exceptions. Skansholm: exceptionella händelser

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Lösningar för tenta 3 DAT043,

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Input. Programmering. Andra källor

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Objektorienterad Programmering (TDDC77)

Kungl. Tekn. Högskolan Förel 1, bild 1 Föreläsning 1: Introduktion ffl Kursinnehåll ffl Javarepetition ffl Referenser ffl Nyckelordet static ffl Klass

Datalogi I, grundkurs med Java 10p, 2D4112, Tentamen 29 november 2003, svar och lösningar

DAT043 Objektorienterad Programmering

Föreläsnings 9 - Exceptions, I/O

Föreläsning 12. Föreläsning 12. Rörliga figurer Klassen Timer Undantag Något om applets. Rörliga appletsfigurer Klassen Timer Undantag

Webbteknik II. Föreläsning 4. Watching the river flow. John Häggerud, 2011

Tentamen ID1004 Objektorienterad programmering May 29, 2012

Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine.

Objektorienterad Programmering (TDDC77)

Innehåll. Socketar. Klient och serverprogrammering: Socketar Föreläsning 9. Klienter och servrar (som sagts tidigare ) Varför socketar

OOP Objekt-orienterad programmering

Lösningsförslag till tentamen

2I1073 Lektion 2. Lektion 2a. Lektion 2a. Servlets, säkerhet, och filhantering. import java.io.*; import javax.servlet.*; import javax.servlet.http.

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

Datainsamling över Internet

The Last Adventure. Innehåll. Objektorientering. Språket Java. Java - Paket. Java - synlighet. Den sista lektionen. Repetition.

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

Föreläsning 3-4 Innehåll

Transkript:

Javaprogrammering - Del 3 Trådar Databaskoppling, Exempel för Inl2 Java och nätverk 1 Trådar multitasking tidsdelning mellan flera exekeverande program multithreading tidsdelning mellan delar av samma exekverande program tidsdelning hanteras av operativsystemet 2 Trådexempel trådklass som presenterar textsträng presentation förskjuts åt höger två prestrådar körs parallellt den ena var 100:e ms den andra var 300:e ms 3

Trådexempel - körning 4 pres_c - 1 public class pres_c extends Thread public pres_c( String to_display, int sleep_time ) this.buf = to_display; this.step = 0; this.last = 80 - to_display.length(); this.sleep_time = sleep_time; // pres_c 5 pres_c - 2 public void run() while ( pres_c.keep_running ) try Thread.sleep( this.sleep_time ); catch ( InterruptedException exc ) 6

pres_c - 3 for ( int index = 0; index < this.step; index++ ) System.out.print( " " ); // Skriv strängen System.out.println( this.buf ); this.step = ( this.step + 1 ) % this.last; // run 7 pres_c - 4 // Sträng att presentera // --------------------- private String buf; // Variabler för att hålla koll på steg // och sovtid mellan presentationer // ------------------------------------ private int step, last, sleep_time; public static boolean keep_running; 8 pres_c - 5 public static void main( String args[] ) // Skapa trådar så att a-tråden körs oftare pres_c a_thread = new pres_c( "A-sträng LÅNGLÅNG", // to_display 100 ); // sleep_time pres_c b_thread = new pres_c( "B-sträng", // to_display 300 ); // sleep_time pres_c.keep_running = true; a_thread.start(); b_thread.start(); // main // class pres_c 9

Javastöd som del av språket nyckelordet synchronized vid "samtidig" dataaccess klassen Thread interface Runnable java VM hanterar mot OS 10 Trådar - status skapad har ännu ej börjat exekvera körbar tråden skeduleras suspenderad tillfälligt avstannad död run-metoden har avslutats/stop anropad 11 synchronized - 1 då kod inte får avbrytas typiskt vid samtidig access av data här tråd write_thread lagrar i buffert tråd read_thread hämtar ur buffert lagring får INTE avbrytas 12

synchronized - 2 class buffer_c public buffer_c( int size ) // Skapa buffert med plats för // size stycken element // buffer_c 13 synchronized - 3 public synchronized void put( String str ) // Behandla str under viss tid // Lagra i buffert // put public String last_item() // Hämta data ur buffert // returnera till anroparen // get // class buffer_c 14 Runnable-interface om man vill ha applet som tråd m.a.o. applet ska skeduleras för anrop ofta... skilj på en applet som implementerar Runnable en applet som kör flera trådar 15

Skedulering av trådar sätt olika prioritet a_thread.setpriority( Thread.MAX_PRIORITY ) b_thread.setpriority( Thread.MIN_PRIORITY ) c_thread.setpriority( Thread.NORMAL_PRIORITY ) a_thread körs oftast... 16 JDBC Java Database Connectivity gränssnitt mot databaser API Application Programmer's Interface JDBC API via import java.sql.* klasser och metoder 17 JDBC - konstruktion JDBC Driver Manager del av Javas bibliotek JDBC Driver görs av DB-leverantör 18

JDBC - grundelement java.sql.drivermanager laddar rätt drivrutiner mot DB java.sql.connection en anslutning mot DB java.sql.statement för att utföra SQL-kommandon java.sql.resultset resultat av SQL-kommando 19 JDBC - finesser java.sql.callablestatement anrop av lagrade procedurer java.sql.preparedstatement vid samma SQL-sats flera gånger java.sql.databasemetadata info om databasen java.sql.resultsetmetadata info om kolumner i ett ResultSet 20 Exempelprogram/Inl 2-1 användare JAVAINL/JAVAINL tabell BIL REGNR varchar MÄRKE varchar ÅR int NYPRIS int 21

Exempelprogram/Inl 2-2 tabell BIL_STAT MÄRKE varchar ÅR int ANTAL int SUMMA int 22 Exempelprogram/Inl 2-3 lagrad procedur procedure SELECT_1( IN_REGNR in char, UT_MÄRKE out varchar, UT_ÅR out int, UT_NYPRIS out int, ALLT_OK out int ); 23 Exempelprogram/Inl 2-4 skapar koppling mot DB DB måste vara igång listar kolumner ur BIL_STAT listar alla datarader i BIL_STAT anropar SELECT_1 presenterar resultatet 24

Exempelprogram/Inl 2-5 import java.sql.*; public class bil_c public static void main( String args[] ) String url = "jdbc:interbase://loopback/c:/temp/bil.gdb:"; 25 Exempelprogram/Inl 2-6 try // Sök klass och länka in... Class.forName( "interbase.interclient.driver" ); // Skapa connection Connection db_conn = DriverManager.getConnection( url, "java", "javainl" ); 26 Exempelprogram/Inl 2-7 // Hämta data ur DB Statement statement = db_conn.createstatement(); ResultSet rs = statement.executequery( "select * from BIL_STAT" ); // Skriv ut kolumnnamnen ResultSetMetaData rsmd = rs.getmetadata(); int kolantal = rsmd.getcolumncount(); 27

Exempelprogram/Inl 2-8 for ( int index = 1; index <= kolantal; index++ ) if ( index > 1 ) System.out.print( ", " ); // if System.out.print( rsmd.getcolumnlabel( index ) ); // for System.out.println(); 28 Exempelprogram/Inl 2-9 // Skriv ut datarader while ( rs.next() ) String marke = rs.getstring( 1 ); int ar = rs.getint( 2 ); int antal = rs.getint( 3 ); int summa = rs.getint( 4 ); System.out.println( marke + ", " + ar + ", " + antal + ", " + summa ); // while 29 Exempelprogram/Inl 2-10 // Anropa en lagrad procedur CallableStatement cs = db_conn.preparecall( "call SELECT_1(?,?,?,?,? )" ); String regnr = "BBC323"; cs.setstring( 1, regnr ); cs.registeroutparameter( 2, java.sql.types.varchar ); cs.registeroutparameter( 3, java.sql.types.integer ); cs.registeroutparameter( 4, java.sql.types.integer ); cs.registeroutparameter( 5, java.sql.types.integer ); cs.execute(); 30

Exempelprogram/Inl 2-11 if ( cs.getint( 5 ) > 0 ) // Felflagga > 0, skriv ut data String marke = cs.getstring( 2 ); int ar = cs.getint( 3 ); int nypris = cs.getint( 4 ); System.out.println( "SELECT_1 gav:" ); System.out.println( marke + ", " + ar + ", " + nypris ); // if 31 Exempelprogram/Inl 2-12 // Stäng DB-kopplingar statement.close(); cs.close(); db_conn.close(); catch ( Exception exc ) System.out.println( "FEL PÅ DATAN" ); // main // class bil_c 32 Körexempel 33

Java och nätverk imponerande stöd socketkommunikation internet läs webbsidor visa webbsidor 34 OSI-modellen 7 nivåer TCP/IP enklare, 4 nivåer: Applikationslager Transportlager Nätverkslager Länklager Nätverk 35 Protokollexempel Applikation ftp, gopher, http Transport TCP, UDP Nätverk IP Länk drivrutiner mot hw 36

Lågnivåprotokoll IP på "paketnivå" TCP, UDP logisk förbindelsenivå stöd för applikationsnivån 37 Högnivåprotokoll FTP File Transmission Protocol filer mellan FTP-server och -klient HTTP HyperText Transmission Protocol web-sidor mellan web-server och -klient TELNET för terminalemulering 38 TCP/IP - Portar 1 mjukvaruportar server går på en port "Porten är öppen" process som svarar på tilltal via porten identifieras av portnummer (16 bitar) max 65536 portar kan ha ännu fler klienter 39

TCP/IP - Portar 2 kan ha textsträngsnamn se c:\winnt\system32\drivers\etc\services portnumren 0.. 1024 well known ports utnyttja INTE för egna servrar 7 - ECHO, 21- FTP 23 TELNET, 80 - HTTP 40 Nätverkning med Java java.net där finns "allt man behöver" t.ex klasserna URL, URLConnection - för stdprotokoll Socket, ServerSocket - TCP-kommunik DatagramSocket - UDP-kommunik 41 Högnivåprotokollstöd stöd via URL-klassen för HTTP FTP Gopher SMTP m.fl. protokollval enkelt 42

URL - högnivåprotokoll man anger protokoll källadress eventuellt portnummer getinputstream då kan man läsa data från källan getoutputstream då kan man skriva data till källan 43 Läsning av URL - 1 skapa URL mot http://www.yahoo.com ordna koppling mot källan skaffa läsanordning läs källan rad för rad lista på terminalen 44 Läsning av URL - 2 import java.net.url; import java.net.urlconnection; import java.io.bufferedreader; import java.io.inputstreamreader; import java.io.ioexception; class url_c 45

Läsning av URL - 3 public static void main( String args[] ) try URL yahoo_url = new URL( "http://www.yahoo.com" ); URLConnection yahoo_conn = yahoo_url.openconnection(); BufferedReader reader = new BufferedReader( new InputStreamReader( yahoo_conn.getinputstream() ) ); 46 Läsning av URL - 4 String buf = reader.readline(); while ( buf!= null ) System.out.println( buf ); buf = reader.readline(); // while reader.close(); // try 47 Läsning av URL - 5 catch ( java.net.malformedurlexception exc ) System.out.println( "Fel på WEB-adressen" ); // java.net.malformedurlexception catch ( java.io.ioexception exc ) System.out.println( "Fel vid getinputstream" ); // IOException // main // url_c 48

Visning av WEB-sida Applet 1 enda knapp Ladda YAHOO-sida kod för att visa en annan WEB-sida 49 Körexempel 50 show_c - 1 import java.applet.*; import java.awt.*; import java.awt.event.*; import java.net.*; public class show_c extends Applet implements ActionListener 51

show_c - 2 public void actionperformed( ActionEvent aev ) handle_show_btn(); // actionperformed 52 show_c - 3 public void handle_show_btn() String yahoo_page = "http://www.yahoo.com"; URL yahoo_url = null; try yahoo_url = new URL( yahoo_page ); // try catch ( MalformedURLException exc ) // catch if ( yahoo_url!= null ) super.getappletcontext().showdocument( yahoo_url ); // if // handle_show_btn 53 show_c - 4 public void init() super.setlayout( null ); Button show_btn = new Button( "Ladda YAHOO-sida" ); super.add( show_btn ); show_btn.setbounds( 20, 50, 160, 30 ); super.show_btn.addactionlistener( this ); // init // show_c 54

Utökad URL-hantering URLStreamHandler URLStreamHandlerFactory URLConnection 55 Socket tillhandahålls av OS för TCP-kommunik döljer krångel speciellt via Javas gränssnitt ServerSocket öppnar en port i servern Socket kan ansluta till server 56 Socketpgm server lyssnar accepterar en klient svarar HEJ HEJ! på HEJ! svarar NOK på annat Klient kopplar upp skickar sträng läser svar 57

Serversidan hanteras av ServerSocket-klassen öppnar en viss server-port inväntar en klient accept svarar på tilltal 58 Mera ServerSocket porten bara för att lyssna inte för kommunik flera samtidiga klienter kör trådar... 59 HEJ! HEJ! - Serversidan Försöker lyssna på port 2747 accepterar 1 klient svarar på tilltal HEJ! HEJ! På HEJ! NOK på annat 60

HEJ! HEJ! - serv_c - 1 import java.net.serversocket; import java.net.socket; import java.io.inputstreamreader; import java.io.bufferedreader; import java.io.printwriter; import java.io.ioexception; public class serv_c 61 HEJ! HEJ! - serv_c - 2 public static void close_server( ServerSocket server ) try server.close(); catch ( Exception exc ) // close_server 62 HEJ! HEJ! - serv_c - 3 public static void close_client( Socket client ) try client.close(); catch ( Exception exc ) // close_client 63

HEJ! HEJ! - serv_c - 4 public static void close_reader( BufferedReader reader ) try reader.close(); catch ( Exception exc ) // close_reader 64 HEJ! HEJ! - serv_c - 5 public static void main( String args[] ) ServerSocket server = null; try server = new ServerSocket( 2747 ); // try catch ( IOException exc ) System.out.println( "Kunde inte lyssna!" ); System.exit( 1 ); //////////////////// // catch 65 HEJ! HEJ! - serv_c - 6 Socket client = null; try System.out.println( "Lyssnar på port 2747" ); client = server.accept(); // try 66

HEJ! HEJ! - serv_c - 7 catch ( IOException exc ) System.out.println( "Fel vid avlyssning!" ); close_server( server ); System.exit( 1 ); //////////////////// // catch System.out.println( "OK. Klient ansluten" ); 67 HEJ! HEJ! - serv_c - 8 PrintWriter writer = null; BufferedReader reader = null; try writer = new PrintWriter( client.getoutputstream(), true ); reader = new BufferedReader( new InputStreamReader( client.getinputstream() ) ); 68 HEJ! HEJ! - serv_c - 9 String buf = reader.readline(); while ( buf!= null ) if ( buf.equals("hej!") ) writer.println("hej! HEJ!"); else writer.println( NOK ); buf = reader.readline(); // while // try 69

HEJ! HEJ! - serv_c - 10 catch ( Exception exc ) exc.printstacktrace(); // catch finally if ( writer!= null ) writer.close(); close_reader( reader ); // if 70 HEJ! HEJ! - serv_c - 11 close_server( server ); close_client( client ); // finally // main // serv_c 71 finally - block bra grej avslut på try.. catch körs oavsett det gick fel eller inte för upprensningskod avslutningsmeddelande m.m. 72

HEJ! Klientsidan tar servernamn som parameter eller IP-adress försöker koppla upp läser från tangentbordet skickar sträng till server skriver ut svaret 73 HEJ! client_c - 1 import java.net.socket; import java.net.unknownhostexception; import java.io.inputstreamreader; import java.io.bufferedreader; import java.io.printwriter; import java.io.ioexception; public class client_c 74 HEJ! client_c - 2 public static void close_client( Socket client ) try client.close(); catch ( Exception exc ) // close_client 75

HEJ! client_c - 3 public static void close_reader( BufferedReader reader ) try reader.close(); catch ( Exception exc ) // close_reader 76 HEJ! client_c - 4 public static void main( String args[] ) if ( args.length!= 1 ) System.out.println( "Ange IP-adress eller maskinnamn" ); System.exit( 1 ); //////////////////// 77 HEJ! client_c - 5 Socket client = null; PrintWriter writer = null; BufferedReader reader = null; BufferedReader kbd_reader = null; 78

HEJ! client_c - 6 try System.out.println( "Koplar upp..." ); client = new Socket( args[0], 2747 ); writer = new PrintWriter( client.getoutputstream(), true ); reader = new BufferedReader( new InputStreamReader( client.getinputstream() ) ); kbd_reader = new BufferedReader( new InputStreamReader( System.in ) ); // try 79 HEJ! client_c - 7 catch ( UnknownHostException exc ) System.out.println( "Kan inte koppla upp mot " + args[0] ); System.exit( 1 ); //////////////////// // catch 80 HEJ! client_c - 8 catch ( IOException exc ) System.out.println( "IO-fel mot " + args[0] ); close_client( client ); if ( writer!= null ) writer.close(); close_reader( reader ); close_reader( kbd_reader ); // if System.exit( 1 ); //////////////////// // catch 81

HEJ! client_c - 9 System.out.println( "OK. Klientsidan ansluten" ); try System.out.print( "Skriv HEJ!" ); String buf = kbd_reader.readline(); while ( buf.length() > null ) writer.println( buf ); String from_server = reader.readline(); System.out.println( from_server ); 82 HEJ! client_c - 10 System.out.print( "Skriv HEJ!" ); buf = kbd_reader.readline(); // while // try catch ( Exception exc ) exc.printstacktrace(); // catch 83 HEJ! client_c - 11 finally writer.close(); close_reader( reader ); close_reader( kbd_reader ); close_client( client ); // finally // main // client_c 84

Datagram - UDP UDP - User Datagram Protocol fristående meddelande (ej punkt-till-punkt) kanske inte når fram... ingen garanterad ordning på paketen används av NFS, nätverksspel m.m. 85 UDP - Javastöd DatagramSocket för sändning och mottagning DatagramPacket datapaket MulticastSocket för sändning till flera 86