Presentation laddar. Vänta.

Presentation laddar. Vänta.

1 1 Musikprogrammering och mobil ljuddesign Föreläsning 4 Kommunikation över nätverk – UDP och MaxMSP.

Liknande presentationer


En presentation över ämnet: "1 1 Musikprogrammering och mobil ljuddesign Föreläsning 4 Kommunikation över nätverk – UDP och MaxMSP."— Presentationens avskrift:

1 1 1 Musikprogrammering och mobil ljuddesign Föreläsning 4 Kommunikation över nätverk – UDP och MaxMSP

2 2 2 Kommunikation över nätverk Innehåll, repetitioner, samt mer om –Översikt –Protokoll –Sockets –Javastöd Litteratur: –föreläsningen kommer i första hand utgå från Sun’s tutorials på http://java.sun.com/docs/books/tutorial/networking/TOC.html http://java.sun.com/docs/books/tutorial/networking/TOC.html –I kursboken svarar detta ungefär mot: 24.4  –Utöver detta bygger föreläsningen på eget framtaget material –Dessutom MaxMSP-exempel

3 3 3 Introduktion till protokoll Då datorer kommunicerar med varandra över internet används vanligtvis en av två följande protokoll –TCP –UDP

4 4 4 Introduktion till protokoll, forts. Distribuerad kommunikation baseras egentligen till lager av på varandra specificerade protokoll Ett övre protokoll är beroende av definition av det undre lagret Ofta har man även applikationsspecifika protokoll (ska se mer av det senare)

5 5 5 Introduktion till protokoll och javastöd. När man skriver javaprogram som kommunicerar över nätverk, så programmerar man på en applikationsnivå. Man behöver då vanligtvis inte känna till något om hur lagren för TCP eller UDP fungerar i detalj. Vad man gör dock är att man använder klasser ur paketet java.net. Dessa klasser ger plattformsoberoende stöd för nätverkskommunikation. Dock, klasserna för TCP respektive UDP är olika och man behöver ändå känna till något om skillnader i protokollens egenskaper då man väljer klasserna som stöder TCP respektive UDP.

6 6 6 TCP - UDP TCP –TCP (Transmission Control Protocol) is a connection-based protocol that provides a reliable flow of data between two computers. –TCP används för flera kända applikationer, så som FTP, Telnet, HTTP UDP –UDP (User Datagram Protocol) is a protocol that sends independent packets of data, called datagrams, from one computer to another with no guarantees about arrival. UDP is not connection- based like TCP. –Vi kommer att se mer av UDP idag

7 7 7 TCP – UDP, forts. Ytterligare om skillnader mellan TCP och UDP –TCP Lagret för transport av datapaket sköts av TCP självt Säkerhet kring att paketen kommer fram och i rätt ordning Minus för den tid som krävs för kontroll och återställning –UDP Lägre säkerhet kring att paketen kommer fram och i rätt ordning Dock, mindre tidsåtgång för att hantera kommunikationen Val av protokoll –TCP, är det vanligast förekommande valet. Speciellt då strömmen av data man skickar ska vara samma i andra änden och där tidsåtgången är mindre viktig –UDP, kan vara ett alternativ vid styrning av realtidssystem då man känner sitt nätverk, eller i övrigt då man har större realtidskrav. Vad gäller för sammanhang av ljudöverföring?

8 8 8 Klasser typiskt för TCP-baserad kommunikation En socket är en ändpunkt i en tvåvägskommunikation mellan två program som kör på ett nätverk. Klasser för sockets används för att representera kopplingen mellan ett klientprogram och ett serverprogram Det javabaserade paketet ’java.net’ tillhandahåller två klasser, ’Socket’ och ’ServerSocket’ som implementerar klient- respektive serversidan av en uppkoppling.

9 9 9 Klasser typiskt för UDP-baserad kommunikation För UDP-baserad kommunikation används –DatagramPacket, svarar mot ett paket med fullständing info om mottagaren –DatagramSocket, representerar sockets för att sända och ta emot ’datagrampaket’. –MulticastSocket, representerar sockets för att sända och ta emot ’datagrampaket’, där mottagare kan vara en grupp. ’Multicast’ och ’Broadcast’ svarar typiskt mot att sända till flera mottagare i en enda sändning

10 10 Angående datagram Definition: A datagram is an independent, self- contained message sent over the network whose arrival, arrival time, and content are not guaranteed. Vad detta innebär är alltså att paketet självt innehåller all den information det behöver för att kunna skickas från en sändare till en mottagare. Dock, sett över hela strömmen av paket, så finns en inneboende otillförlitlighet i detta.

11 11 Illustration

12 12 Angående datagram, översikt Se även http://java.sun.com/javase/7/docs/api/http://java.sun.com/javase/7/docs/api/

13 13 Angående datagram, översikt, forts Attribut –byte[] buf, buffert med ett antal bytes av ospecificerad typ –int length, längd på buffert = antal bytes –InetAddress address, adress för datagrampaketet, typiskt adress på mottagare –int port, port för datagrampaketet, typiskt port på mottagarsidan

14 14 Angående datagram, översikt, forts Konstruktorer –DatagramPacket(byte[] buf, int length, InetAddress address, int port), för att skapa ett paket, typiskt med en känd destinationsadress. –DatagramPacket(byte[] buf, int length), för att skapa ett paket, typiskt då adressen är okänd, eller fylls i implicit.

15 15 Angående datagram, översikt, forts Metoder –InetAddress getAddress(), returnerar internetadressen för ett datagrampaket –int getPort(), returnerar portnummer för ett datagrampaket –byte[] getData(), returnerar det egentliga innehållet för ett datagrampaket –int getLength(), returnerar storleken på det egentliga innehållet för ett datagrampaket

16 16 Angående DatagramSocket En DatagramSocket är en socketlösning för UDP Som en socket för TCP, –Men för kommunikation med DatagramPackets –Specar inte destinationsadress, denna finns ju som en del av det Datagrampaket man skickar –Ser lika ut på klient- och serversidan –Finns inget alternativ till ServerSocket

17 17 Illustration Se även http://java.sun.com/javase/7/docs/api/ http://java.sun.com/javase/7/docs/api/

18 18 Angående DatagramSocket, forts. Konstruktorer och metoder –DatagramSocket(), skapar en socket och väljer en ledig port att kommunicera över –DatagramSocket(int port), skapar en socket som komunicerar över porten med portnummer port –send(DatagramPacket p), skickar ett datagrampaket, destinationen definieras av paketet –receive(DatagramPacket p), tar emot ett datagrampaket via parameter p

19 19 Exempel En server tillhandahåller ’dagens citat’, Kommentar: Dessa är lagrade i en fil med texter (rader med String). Detta kräver i sin tur en konvertering från String till en byte-sekvens En klient efterfrågar dessa Kommentar: Citat skrivs ut som en text (String). Kräver i sin tur en konvertering från en byte- sekvens till en String

20 20 Informellt diagram, serversidan Textfil med citat

21 21 Informellt diagram, klientsidan

22 22 Filer som ingår i exemplet QuoteServer, javaklass med main på serversidan QuoteServerThread, javaklass med serversidans socket, läser även från citatfilen one_liners.txt, textfil med ett citat per rad QuoteClient, javaklass med klientsidans socket

23 23 Distribuerad kommunikation Exemplet börjar med att kommunicera över local host För att kommunicera över nätverk behöver man känna till, inte bara portnummer för servern, utan även IP- adressen

24 24 Metoder för adresser Se DatagramSocket från java.net, sidan http://java.sun.com/javase/7/docs/api/ http://java.sun.com/javase/7/docs/api/ DatagramSocket – InetAddress getLocalAddress() Gets the local address to which the socket is bound.InetAddressgetLocalAddress

25 25 Något om MaxMSP och nätverkskommunikation MaxMSP ger stöd för UDP-baserad kommunikation över nätverk Exempelvis –Kör igång MaxMSP –File  New  Patcher –Högerklicka i ytan  New Object  Devices  udpreceive –Med objektet markerat, Högerklicka på objektet  Help

26 26 Exempel med udpreceive - udpsend Exemplet visar hur två delar kommunicerar med varandra –Send, sänder olika typer av data över local host och mot port 7400 eller 7401 –Receive, tar emot input på port 7400 eller 7401 och skriver ut indata

27 27 Java och MaxMSP Går det nu att kombinera java med UDP- baserad kommunikation och MaxMSP? –UDP är ett allmänt protokoll som inte är beroende av språk eller plattform Exempel –Låt udpsend sända till port 7401, ställs in i MaxMSP –Låt javaprogram ta emot på port 7401 och sända indata till 7400 –Låt udpreceive ta emot på port 7400 och skriva ut indata, ställs in i MaxMSP

28 28 Javaprogrammet – skiss maxMSPSocket = new DatagramSocket(7401); byte[] buf = new byte[2048]; // Ta emot från MaxMSP-sender DatagramPacket packet = new DatagramPacket(buf, buf.length); maxMSPSocket.receive(packet); // Skicka till MaxMSP-Receiver packet.setAddress(InetAddress.getLocalHost()); packet.setPort(7400); maxMSPSocket.send(packet);

29 29 Kommunikation över nätverk Genom att ersätta local host i packet.setAddress(InetAddress.getLocalHost()); med en adress till annan dator kan man styra varandras MaxMSP-patchar Detta går visserligen utan java, men med kopplingen MaxMSP och java, har man tillgång till en mera generell programmeringmiljö, med grafiska gränssnitt och annat.

30 30 Ytterligare ett exempel Kan man skapa ett system för att spela på varandras MaxMSP-patchar över nätet? –Studera exempel med ’ljudande’ MaxMSP- patch –Studera exempel med javaprogram för nätverksbaserad kommunikation

31 31 Uppgift Utveckla exemplet mot ett system där man kan logga in på en server för att spela med andra, man spelar alltså både på sin egen och andras patchar Man får alltså ett system för distribuerad jamming Att tänka på –Hur beskriva systemets arkitetur? –Hur kan GUIs/TUIs tänkas se ut? –Hur beskriva applikationens protokoll? –Hur bygger man sina MaxMSP-patchar? –Hur kommunicerar man med MaxMSP-patcharna?


Ladda ner ppt "1 1 Musikprogrammering och mobil ljuddesign Föreläsning 4 Kommunikation över nätverk – UDP och MaxMSP."

Liknande presentationer


Google-annonser