Java Nätverks API URL sockets
Nätverkskomponenter i Java URL Stream sockets (TCP) Datagram sockets (UDP) Remote Method Invocation (RMI)
URL klassen Representerar en web resurs metoder getProtocol() URL url1 =new URL(”http://www.du.se/~jbr”); URL url2 =new URL(url1,”index.html”); metoder getProtocol() getPort() openConnection() getContent()
URLConnection klassen Öppna en url koppling URLConnection con = url1.openConnection(); Hämta innehållet på en websida BufferedReader Stream = new BufferedReader( new InputStreamReader( con.getInputStream()));
Socket klassen Java.net.Socket används för att göra en TCP socket för en klientapplikation. getInputStream() och getOutputStream() används för att skapa InputStream/OutputStream objekt kopplade till Socket.
Socket klassen Socket HTTP port host host:port TCP IP IP TCP
ServerSocket klassen Används för att skapa en socket koppling på server sidan Tillsammans med Socket kan man skriva distribuerade Client/Server applikationer i Java utan att behöva bekymra sig om detaljer som accept på lägre nivåer
Exempel: Dagens datum import java.net.*; import java.io.*; import java.util.Date; public class date { public static void main(String[] args) { try { for (int i = 0; i < args.length; i++) { Socket s = new Socket(args[i], 13);
Exempel: Dagens datum InputStream is = s.getInputStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); String theTime = br.readLine(); System.out.println(theTime); s.close(); } catch (IOException e) { System.out.println((new Date()).toString());
Uniform Datagram Protocol TCP feltolerant, dvs sänder om packet inte kom fram eller blev korrupt UDP har ingen felkontroll Varför använda UDP? UDP upp till 3ggr snabbare än TCP
UDP klasser Java.net.DatagramSocket java.net.DatagramPacket Fungerar både som klient och server UDP portar skilda från TCP portar java.net.DatagramPacket Hållare för de byte´s som skall skickas resp sändas Innehåller IP adressen och portnummer
DatagramPacket konstruktorer public DatagramPacket( byte[] data, int length) byte[] data, int length, InetAddress iaddr, int iport)
DatagramPacket InetAddress ia = new InetAddess(”datan"); int chargen = 19; String s = "My second UDP Packet”; byte[] b = s.getBytes(); DatagramPacket dp = new DatagramPacket(b, b.length, ia, chargen);
DatagramSocket konstruktorer public DatagramSocket() throws SocketException public DatagramSocket(int port) throws SocketException public DatagramSocket(int port, InetAddress laddr) throws SocketException
Skicka Datagram class UDPSend { public static void main(String[] args) { try { InetAddress ia = InetAddress.getByName(args[0]); int chargen = 19; String s = "My second UDP Packet"; byte[] b = s.getBytes(); DatagramPacket dp = new DatagramPacket(b, b.length, ia, chargen); DatagramSocket sender = new DatagramSocket(); sender.send(dp); } catch (UnknownHostException e) {} catch (IOException e) {} }
MulticastSocket Ärver DatagramSocket Två nya metoder joinGroup() och leaveGroup(). Endast multicastadresser 224.0.0.1 - 239.255.255.255 Modifierad send som talar om hur många hops man skall skicka sitt multicast meddelande