Nätverkskommunikation

Slides:



Advertisements
Liknande presentationer
Interface.  Interface är en datatyp och har alltså egen syntax och en hel del egna regler för vad arv från interface innebär.  Interface är renodlad.
Advertisements

Avlusning Debugger (”avlusare”) Breakpoints Watch.
Array Skriv ett program som frågar följande: ”Hur många tal vill du mata in?” användaren matat in ett tal t.ex n. då frågar programmet n ggr följande.
Lektion 6 Mahmud Al Hakim
Nätverk och Java, grunder Föreläsning 0: Introduktion till Internet
Klasser och objekt.
”Ett sätt att distribuera Business Objects via webben”
Next previous Internetprogrammering 2000 Internetprogrammering 2000 Föreläsning 10 Distribuerad programmering med Javas RMI, Remote Method Invocation.
Nätverk och Java, grunder Föreläsning 6
Filhantering Grundprincipen för filhantering Öppna filen
Nätverkskommunikation
Välkommen Vahid Mosavat
Programmeringsteknik för K och Media
Programmeringsteknik K och Media
Programmeringsteknik för K och Media
Programkodens uppbyggnad
Föreläsning 2 Primitiva datatyper Variabler och konstanter Tilldelning Inläsning Operatorer Villkorssatsen if Slingor: while och for.
Next previous Innehåll Inledning Några enkla exempel Pekare till och kort beskrivning av större exempel Speciella referenser (som används i marginalen)
Strömmar Vid läsning och skrivning används något som kallas strömmar.
Java Nätverks API URL sockets.
Alice in Action with Java
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
1 1 Musikprogrammering och mobil ljuddesign Föreläsning 4 Kommunikation över nätverk – UDP och MaxMSP.
Programmering B PHP Lektion 1 Mahmud Al Hakim Folkuniversitetet
int res2=Math.max(tal1,tal2);
Vektorer (klassen Vector) Sortering
Av Oliver och Emil. En kort historia om Internet Datorn uppfanns i slutet av 1950-talet. Det var då man försökte koppla ihop flera datorer för att skicka.
OOP Objekt-orienterad programmering
Programmeringsteknik för Media1 & K1
PROCESSPROGRAMMERING Föreläsning ‏ Innehåll: Högnivå objekt för trådprogrammering: - Trådgrupper (”Thread pools”)‏ - Exekverare (Executor.
OOP F6:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 6 Mer om klasser och objekt Hantera många objekt ArrayList toString() – metoden.
OOP F3:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 3 Iteration Många variabler av samma sort – Arrayer.
Servlets — Java på serversidan. previous next 2 Servlets Introduktion Javaservlets är en i raden av SUN:s många tillämpningar av Java. Servlets kan grovt.
Föreläsning 14 ”Enkel” Filhantering.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Next previous RMI, Remote Method Invocation Om du har boken av Marty Hall, läs avsnitt 15.8 För fler exempel se:
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
© 2007 Cisco Systems, Inc. All rights reserved.Cisco Public ITE PC v4.0 Chapter 1 1 Network Services Networking for Home and Small Businesses – Chapter.
UDP Pålitlig byteström TCP
Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 11 C# I/O Streams C# använder “strömmar” för in- och utmatningsoperationer.
Föreläsning 9 Gränssnitt. Super Super kan användas till anrop av en omdefinierad metod Super kan användas till anrop av konstruktorer i superklassen Super.
Network Services (Nätverkstjänster) Client/Servers And Their Interaction (Client/Server och deras interaktion)
Föreläsning 12 Om slutprovet. Repetition –deklaration av variabler –skapande av objekt (instansiering) –Vektorer och Vector-klassen –Klasser –Instans-/klassvariabler.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( )‏ Innehåll:  Introduktion till Java EE (Enterprise Edition)  Enterprise Java Beans.
1 Sockets Traditionellt har UNIX varit svag på IPC, InterProcess Communication. I augusti 1983 kom en ny IPC-mekanism i 4.2BSD som var enkel om konsistent.
Föreläsning 4 Klasser Och Objekt.
1. Ett problem/uppgift.
PROGRAMMERINGSTEKNIK Övningsgrupp 3 Marcus Hjelm
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
Föreläsning 1 Om kursen Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
0. Kod, Klassdiagram och Sekvensdiagram import java.awt.event.*; import javax.swing.*; import java.awt.*; public class TwoThreads implements ActionListener.
PROCESSPROGRAMMERING Föreläsning 1 ( )‏ Innehåll: Introduktion till paralellprogrammering (“concurrent programming”)‏ Introduktion till parallellprogrammering.
ITK:P2 F8 Strömmar och filhantering DSV Peter Mozelius.
OOP F13:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 13 Repetition variabler, selektion och iteration.
TILLÄMPAD DATALOGI (TILDA) Övning 1 Marcus Hjelm
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Övning2 programmeringsteknik och Matlab 2D1312/ 2D1305
Övning 3. Repetition Metoder class RepetitionMetoder { public static void main(String [] args) double längd = 2.0; double bredd = 1.0; double area =
Programmeringsteknik för K och Media
William Sandqvist Distributed Computing Client – Server. En skrivarserver kan vara ett exempel på en Client-Server arkitektur. S Burd, Systems.
Föreläsning 9 Inläsning och utskrift på fil –SimpleTextFileReader –SimpleTextFileWriter Felsökning Java API.
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning4 Repetition slingor Metoder. while-sats består av följande delar: 1. while 2. Villkor-sats (condition) 3. uttryck (statement) while-sats int.
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
Socketprogrammering Klient/server Protokollstacken TCP UDP Java C Avlusning Versionshantering.
RMI Av: Josefina & Sarah DS04.
Föreläsning 8: Exempel och problemlösning
JVM Java Virtual Machine
10 Kommunikation i Java Skansholm kap 18
Presentationens avskrift:

Nätverkskommunikation Programmering för Internet är relativt enkelt i Java: Stöd finns för hantering av resurser på Internet via URL-adresser Stöd för programmering av sockets för säkra punkt-till-punkt förbindelser Stöd för programmering av datagram, en form av icke-säker kommunikation

Klasser för nätverkspro-grammering finns i paketet java.net Stöd för hantering av standard-protokoll och möjlighet till definiering av egna protokoll Klasser för nätverkspro-grammering finns i paketet java.net

URL-kommunikation URL-Uniform Resource Locator En adress för en resurs på Internet Adressen specificerar både protokoll, dator (host), ev. port och katalogposition Resursen kan bestå av en web-sida, grafik, video-snutt etc. Ett skapat URL-objekt kan användas för kommunikation

Exempel Skapa URL-objekt: try { URL url = new URL(”htttp://www.itm.mh.se”); URL urlrel = new URL(url, ”logo.gif”); } catch (MalformedURLException e) // Felaktig URL Ännu har ingen kontakt skapats, men man kan enkelt: Koppla in/ut-strömmar till URL Hämta info om fil; fillängd, senast ändrad,skapad, typ etc. Ladda ner kopia av filen

Ladda ner html-fil mm. import java.io.*; import java.net.*; public class URLTest { public static void main(String[] args) { try { // Skaffa URL-obj, ansluta URL url = new URL("http://www.itm.mh.se"); URLConnection uc = url.openConnection(); uc.connect(); // Hämta fillängd int length = uc.getContentLength(); System.out.println("Fillängd: " + length); // Skapa strömmar, kopiera html-filen InputStream in = uc.getInputStream(); FileOutputStream out = new FileOutputStream("Kopierad.html"); int i = 0; while ((i=in.read()) >= 0) { out.write((byte) i); } in.close(); out.close(); catch (MalformedURLException e) {;} catch (IOException ee) {;} } // main()

Datagram, UDP Datagram använder UDP-protokollet (alltså ej TCP!) Snabbt men mera osäkert Ingen kontroll av att det sända kommer fram, om det kommer fram i rätt ordning Kan användas t ex för över-föring av real-time audio, video, utsändning av aktiekurser etc.

Möjlighet finns att skicka meddelanden till flera mottagare på en gång (mulicast) Speciell, s.k. multicast-socket skapas Meddelanden sänds till en fiktiv multicast-adress som mottagarna avlyssnar T ex kan enkla chat-program skapas med denna teknik (lämpligt med trådning!)

Uppkopplade förbindelser, TCP Används vid Client/Server programmering Datagram: Brevförbindelse Client/Server: Telefonförbindelse Förbindelsen säkerställer att meddelandena kommer fram på ett korrekt sätt

Allmänt om client/server Servern tillhandahåller en tjänst: Email, databas, ftp, web etc. Servern är ”bestämd” genom datorns ip-adress och servens port-nummer Servern lyssnar efter anrop, clienter från andra datorer söker upp tjänster Trådade servrar kan hantera flera clienter samtidigt, ta emot meddelanden samtidigt som svar sänds etc.

Server En serversocket skapas genom Serversocket s = new ServerSocket(port); Socket s avlyssnar nu den angivna porten, inget mera händer… Om en client anropar s kan en ”riktig” socket skapas genom Socket conn = s.accept(); Nästa steg: koppla in- och utström till denna socket: DataInputStream in = new DataInputStream(conn.getInputStream()); DataOutputStream out = new DataOutputStream(conn.getOutputStream());

Mycket enkel server import java.net.*; import java.io.*; public class SimpleServer { public static void main(String[] args) { int port = 4466; Socket con = null; String input = null; BufferedReader in = null; OutputStreamWriter out = null; try { ServerSocket server = new ServerSocket(port); con = server.accept(); in = new BufferedReader(new InputStreamReader( con.getInputStream())); out = new OutputStreamWriter( con.getOutputStream()); input = in.readLine(); out.write("You wrote: " + input + "\r\n"); out.flush(); } // try catch (IOException e) {;} finally { if (con != null) con.close(); } } // finally } // main() } // class SimpleServer

Test av server via Telnet Förbindelsen öppnas från Telnet SimpleServer svarar på anrop Intern ip-beteckning: localhost/217.0.0.1

Svagheter med servern Kan bara behandla en client åt gången Åtgärd… Efter ett behandlat meddelande stänger den ner sig

Clienter Serversockets skapas via port-nummer, clientsockets via ip-adress och portnummer Exempel: … Socket s = new Socket("localhost", 4466); BufferedReader s_in = new BufferedReader(new InputStreamReader(s.getInputStream())); PrintWriter out = new PrintWriter (s.getOutputStream()); String str = in.readLine(); // Läsa från nätet Inläsning från tangentbord: BufferedReader tangent_in = new BufferedReader (new InputStreamReader(System.in));

Enkel client Anpassad till SimpleServer import java.io.*; import java.net.*; public class SimpleClient { public static void main(String[] args) { String str = null; try { Socket s = new Socket("localhost", 4466); BufferedReader in = new BufferedReader( new InputStreamReader(s.getInputStream())); PrintWriter out = new PrintWriter (s.getOutputStream()); out.print("Hej server \r\n"); out.flush(); str = in.readLine(); System.out.println(str); } // try catch (IOException e) {System.out.println("No connection");} } // main } // Client

Fler möjligheter Få tag i Inet-adress: Ger svaret: InetAddress adr = InetAddress.getByName ("www2.ite.mh.se"); Ger svaret: www2.ite.mh.se/10.55.2.2 Få adress till anslutande client: String s = con.getInetAddress().toString(); // där con är serverns socket Egen adress fås genom: InetAddress.getLocalHost();

Serialization Utöver läsning/skivning av enkla, inbyggda typer kan även hela objekt behandlas. Inbyggda typer (int, double…) har alla bestämd längd Godtyckliga objekt har varierande längd, kan ha referenser till andra objekt… Genom serialisering kan data lagras och återskapas på fil, sändas över nätverk etc.

I Java kallas detta att serialisera objektet Strömmarna ObjectInputStream och ObjektOutStream används Metoderna readObject() och writeObject() gör arbetet Exempel på skapande av strömmar: … Socket con = server.accept(); OutputStream out = con.getOutputStream(); ObjectOutputStream out_obj = new ObjectOutputStream(out); InputStream in = con.getInputStream(); ObjectInputStream in_obj = new ObjectInputStream(in); // Läsa in obj: c = (C)in_obj.readObject(); //expl. typomv. Den klass C som objektet c tillhör måste dock implementera gränssnittet Serializable public class C implements Serializable

RMI ”Remote Method Invocation”, Javas motsvarighet till CORBA Möjliggör anrop mellan distribuerade Javaobjekt i olika maskiner Metoder kan adresseras till att utföras på andra datorer RMI använder sig av serialisering,  objekt kan ingå i metodernas argumentlista

RMI kräver definition av Interface och, utöver vanlig kompilering, en särskild kompilering för att åstadkomma de stubb- och skelettklasser som krävs