10 Kommunikation i Java

Relevanta dokument
F8 Meddelandesändning med UDP

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

F1 Nätverk och meddelandesändning

F1 Nätverk och meddelandesändning

F9 Meddelandesändning med UDP

F1 Nätverk och meddelandesändning

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

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

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

Föreläsning 5 Meddelandesändning med TCP

F5 Meddelandesändning med TCP

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

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

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

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

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

Föreläsning 5 Meddelandesändning med TCP

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

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

Tentamen Nätverksprogrammering Lösningsförslag

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

Datakommunikation och Internet

Tentamen Nätverksprogrammering Lösningsförslag

JAVAUTVECKLING LEKTION 7

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

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

Tentamen Nätverksprogrammering Lösningsförslag

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

Tentamen Nätverksprogrammering Lösningsförslag

Lösningar för tenta 2 DAT043,

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

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

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

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

Tentamen Nätverksprogrammering Lösningsförslag

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

Tentamen Nätverksprogrammering Lösningsförslag

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

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

Objektorienterad Programmering DAT043. Föreläsning 11 19/2-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)

Tentamen Nätverksprogrammering Lösningsförslag

Tentamen Nätverksprogrammering Lösningsförslag

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

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

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

Laboration D, Nätverkskommunikation

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

Laborationer, moment 4 5

Föreläsning 7. DD2390 Internetprogrammering 6 hp

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

Java Secure Sockets Extension JSSE. F5 Secure Sockets EDA095 Nätverksprogrammering! Roger Henriksson Datavetenskap Lunds universitet

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Språkkonventioner och redigering av tal.

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

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

Projektrapport. MegaLoad. Nätverksprogrammering EDA

Datakommunika,on på Internet

Input. Programmering. Andra källor

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

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

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

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

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

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

Laborationer, moment 4 5

Fördjupad Java. Undantagshantering. Fel

Olika slags datornätverk. Föreläsning 5 Internet ARPANET, Internet började med ARPANET

Ingenjörsfirman Stéen Java Sida 1 av 1

Mer källkod. Styrstrukturer Val Slingor Operatorer Källkodsexempel med minne. Erik Forslin. Rum 1445, plan 4 på Nada

Objektorienterad programmering i Java

Tentamen Nätverksprogrammering Lösningsförslag

Datainsamling över Internet

Kapitel 6. Hakparenteser fšr att ange index MŒnga všrden av samma typ

Föreläsning 14. Filhantering

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.

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel

Nätverksprogrammering. Tekniker för att skriva program som kommunicerar med varandra över ett nätverk. F1 Nätverk och strömmar.

JAVAUTVECKLING LEKTION 4

Instuderingsuppgifter läsvecka 6 - LÖSNINGAR

Tentamen i Datorkommunikation den 10 mars 2014

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

Upplägg. Introduktion. Examination. Mål. Konsekvenser. Java. Kursen heter konstruktion, ej design eller formgivning.

DEL 1 För att få godkänt på tentan (betyg 3) måste du lösa minst fem av sju uppgifter i denna del.

Tentamen , Grundläggande programmering i Java

F1 Nätverk och strömmar

Grundläggande datavetenskap, 4p

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

Tentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-16, TDA540. Dag: , Tid:

Gästföreläsningen. Synpunkter?

Tentamen , Introduktion till Java, dtaa98, dtea53

Datakommunika,on på Internet

SMD 134 Objektorienterad programmering

F4. programmeringsteknik och Matlab

Tänk på följande: Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

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

Objektorienterad Programmering (TDDC77)

List.java. List.java. Printed by Tom Smedsaas

Transkript:

10 Kommunikation i Java adresser filaccess över nätverk ar och sockets datagram multicasting client-server Skansholm kap 18 Adressering En URL (=Uniform Resource Locator) identifierar en resurs på WWW protokoll://adress:/filnamn http://www.chalmers.se/dit/index.htm En IP-adress identifierar en dator på Internet 129.16.214.8 I textform som ovan eller som en följd av bytes 1 2 Java-klasser för Adressering java.net.url java.net.url för hantering av URL-objekt new URL(String adress) URLConnection openconnection() skapar ett URL-objekt av adress öppnar en förbindelse java.net.urlconnection för hantering av resurser som refereras av URL-objekt String getprotocol() String gethost() String getport() ger protokollet ger datoradressen ger numret java.net.inetaddress för hantering av IP-adresser String getfile() ger filnamnet 3 4 java.net.urlconnection InputStream getinputstream() OutputStream getoutputstream() Object getcontent() int getcontentlength() String getcontenttype() long getdate() long getlastmodified() ger en inström som läser från den öppna förbindelsen ger en utström som skriver på den öppna förbindelsen ger objekt från strömmen ger resursens (filens) längd ger resursens typ ger tidpunkt för resursens skapelse ger tidpunkt för senaste ändring Ex. Läsning av fil try { URL url = new URL( http://www.chalmers.se/dir/file.txt ); URLConnection uc = url.openconnection(); catch (MalformedURLException e) {... catch (IOException e) {... try { BufferedReader in = new BufferedReader( new InputStreamReader(uc.getInputStream())); String line; while ( (line = in.readline())!= null ) System.out.println(line); catch (IOException e) {... 5 6

Portar och sockets Portar och sockets En är en logisk anslutningspunkt till en tjänst som tillhandahålls av en dator. En socket är en kommunikationskanal mellan ett program och omgivningen genom en. Program Portnumrering Portnummer: 0-65535 0-1024 är standardiserade, resten kan användas fritt 80 http-kommunikation 21 ftp-kommunikation Program socket 7 8 Datagram Datagram Ett datagram är ett datapaket som innehåller data som skall överföras ( nyttolast ) mottagardatorns IP-adress numret för mottagartjänsten Datagram kan komma fram i godtycklig ordning Ingen leveransgaranti Sändare Datagrampaket data 129.16.214.8 1837 IP-adress: 129.16.214.8 1837 Mottagare data 129.16.214.8 1837 9 10 java.net.inetaddress java.net.datagramsocket InetAddress getlocalhost() InetAddress getbyname(string hostname) String gethostname() ger adressen till den egna datorn ger adressen till datorn hostname (namnet symboliskt eller IP i textform) ger namnet på den egna datorn new DatagramSocket(int ) new DatagramSocket() send(datagrampacket p) receive(datagrampacket p) skapar en socket genom en skapar en socket genom en ledig sänder datagrammet p från denna socket tar emot datagrammet p från denna socket String gethostaddress() Symboliskt namn www.chalmers.se IP i textform 129.16.214.8 ger IP-adressen i textform till den egna datorn setsotimeout(long t) int getlocalport() anger att receive skall vänta högst t ms vid timeout kastas SocketTimeoutException ger numret på den lokala en som denna socket är bunden till 11 12

java.net.datagrampacket new DatagramPacket(byte[] buf, int len, InetAddress iaddr, int ) new DatagramPacket(byte[] buf, int len) byte[] getdata() int getlength() InetAddress getaddress() int getport() skapar ett datagrampaket för sändning av len bytes i buf till på iaddr skapar ett datagrampaket för mottagning av max len bytes i buf (len <= buf.length) ger en referens till paketets databuffert ger längden på paketets datainnehåll ger adressen till avsändaren (vid mottagning) ger adressen till mottagaren (vid sändning) ger numret till avsändaren (vid mottagning) ger numret till mottagaren (vid sändning) Exempel: Skicka och ta emot datagram Programmet SendMessage läser text från tangtentbordet och skickar varje rad som datagram till IP-adressen 127.0.0.1 på 1234 Programmet ReceiveMessage hämtar datagram från 1234 och skriver ut dem i konsolfönstret 127.0.0.1 är en s.k. loop-back-adress som lämpar sig för testning lokalt innanför brandvägg. 13 14 SendMessage.java im java.net.*; im java.io.*; class SendMessage { public static void main( String[] arg ) throws UnknownHostException, SocketException, IOException { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); InetAddress toaddr = InetAddress.getByName(arg[ 0 ]); int toport = Integer.parseInt(arg[ 1 ]); DatagramSocket socket = new DatagramSocket(); System.out.print("? "); String message = in.readline(); if (message == null) break; byte[] data = message.getbytes(); socket.send(new DatagramPacket(data, data.length, toaddr, toport)); exekvering > java SendMessage 127.0.0.1 1234 15 ReceiveMessage.java im java.net.*; im java.io.*; class ReceiveMessage { public static void main(string[] arg) throws SocketException, IOException { int receiveport = Integer.parseInt(arg[ 0 ]); DatagramSocket socket = new DatagramSocket(receivePort); byte[] data = new byte[1024]; DatagramPacket packet = new DatagramPacket(data, data.length); socket.receive(packet); System.out.println("Message from " + packet.getaddress().gethostname()); String message = new String(packet.getData(), 0, packet.getlength()); System.out.println(message); exekvering > java ReceiveMessage 1234 16 Multicasting multicasting: ett datagram skickas till alla medlemmar i en grupp (1:N) sändaren kan själv ingå i gruppen som får datagrammet fiktiva (klass D) IP-adresser mellan 224.0.0.0 och 239.255.255.255 används för adressering för multicasting används MulticastSocket Multicasting 17 18

java.net.multicastsocket new MulticastSocket(int ) send(datagrampacket p) receive(datagrampacket p) joingroup(inetaddress iaddr) leavegroup(inetaddress iaddr) skapar en multicast-socket genom en sänder datagrammet p från denna socket tar emot datagrammet p från denna socket Ansluter denna socket till multicast-gruppen på adressen iaddr Kopplar bort denna socket från multicast-gruppen på adressen iaddr Exempel: Skicka ett Multicast-datagram MulticastSocket sock = new MulticastSocket(); iaddr = InetAddress.getByName(); sock.joingroup(iaddr); Anslut till gruppen Skicka datagrammet DatagramPacket p = new DatagramPacket(data,data.length,iAddr,); sock.send(p); Lämna gruppen sock.leavegroup(iaddr); 19 20 Client-server Client-Server Uppkopplad förbindelse mellan två program Dataflöde mellan två parter Adressering ej nödvändig vid varje överföring Server 21 22 java.net.socket java.net.serversocket new Socket(InetAddress iaddr, int ) InputStream getinputstream() OutPutStream getoutputstream() InetAddress getinetaddress() ansluter till en på servern på iaddr ger en ström för hämtning av data från den andra datorn ger en ström för sändning av data till den andra datorn ger adressen som denna socket är ansluten till new ServerSocket(int ) Socket accept() ger en socket för lyssning på en väntar på att klient ansluter sig ger tillbaks klientens socket ServerSocket servsocket = new ServerSocket(1234); // wait for a client to connect Socket clientsocket = servsocket.accept(); new clienthandler(clientsocket); Exekverar klienthanteringen i en tråd 23 24

Exempel: Väderstation re temperatures SensorClient SensorClient sensorport displayport WeatherServer request values send back values database 25