java, java, java object-oriented problem solving ralph morelli trinity college hartford, ct...
TRANSCRIPT
![Page 1: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/1.jpg)
JAVA, JAVA, JAVAObject-Oriented Problem Solving
Ralph MorelliTrinity CollegeHartford, CT
presentation slides for
published by Prentice Hall
Second Edition
![Page 2: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/2.jpg)
Java, Java, JavaObject Oriented Problem Solving
Chapter 15: Sockets and Networking
![Page 3: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/3.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
Objectives
• Understand some basic facts about networks.
• Know how to use Java's URL class to download network resources from an applet or application.
• Be able to design networking applications using the client/server model.
• Understand how to use Java's Socket and ServerSocket classes.
![Page 4: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/4.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
Outline
• An Overview of Networks• Using Network Resources from an Applet• From the Java Library: java.net.URL• The Slide Show Applet• Network Resources from an Application• Client/Server Communication via Sockets• Case Study: Generic Client/Server Classes• Java Network Security Restrictions• In the Laboratory: The Internet CyberPet
![Page 5: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/5.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
An Overview of Networks
• A local area network (LAN) is usually a privately owned network located within a single office or a single organization.
• A Wide Area Network (WAN) spans a wide geographical distance -- e.g, MCI or Sprint.
• Its topology refers to a network’s shape.
• One of Java’s strengths is the support it provides for the Internet and client/server programming.
![Page 6: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/6.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
Network Topologies
• Networks come in many shapes, each with different levels of connectivity.
![Page 7: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/7.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
Internets
• An internet is a collection of two or more distinct networks, joined by routers.
• The Internet is one example.
![Page 8: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/8.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
Network Protocols
• A protocol is a set of rules that governs the communication of information.
• Examples:– SMTP: Simple Mail Transfer Protocol– HTTP: HyperText Transfer Protocol– FTP: File Transfer Protocol
• HTTP uses a Uniform Resource Locator (URL) to specify an address on the Internet:
METHOD://HOST/PATHHTTP://www.prenhall.com/morelli/index.html
![Page 9: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/9.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
Client/Server Applications
• A client/server application divides a task between two computers, client and server.
• Examples: HTTP, SMTP, FTP .
• Client/Server Protocol:Server: Set up a service on a particular host computer.Client: Contact the server and request the service.Server: Accept a request from a client and provide the service.
![Page 10: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/10.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
Network Protocols
• A network is divided into several layers of protocols: Application protocols.
Low-level transmission
protocols.
![Page 11: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/11.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
The IP Protocol
• The Internetworking Protocol (IP) translates between one network protocol and another.
• IP makes internetworking possible:
![Page 12: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/12.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
The java.net Package
![Page 13: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/13.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
From the Java Library: java.net.URL
• Methods for connecting to a Web site:
URL url;try { url = new URL("http://www.prenhall.com:80/morelli/index.html");} catch (MalformedURLException e) { System.out.println("Malformed URL: " + url.toString()) ;}
• Example: URL of resource.
![Page 14: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/14.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
Code Reuse: java.applet.Applet
public class Applet extends Panel { public AppletContext getAppletContext(); public AudioClip getAudioClip(URL url); public Image getImage(URL url); public void play(URL url); public void showStatus(String msg);}
• Methods for downloading resources:
URL url; try { url = new URL("http://www.prenhall.com/morelli/sounds/sound.au"); play(url); url = new URL("http://www.prenhall.com/morelli/gifs/demo.gif") ; imgRef = getImage(url); } catch (MalformedURLException e) { System.out.println("Malformed URL: " + url.toString()) ; }
Download and play a sound.
Download and store an image.
![Page 15: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/15.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
SlideShowApplet
• Task: Download slides from a Web site.
• Basic Algorithm: Repeat– Generate the URL for the next slide.– Use the URL to download the
image or document.– Display the image or
document.
![Page 16: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/16.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
SlideShowApplet: Decomposition
• The applet serves as a user interface. It downloads and displays slides.
• The Timer thread times slide changes.
Uses
![Page 17: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/17.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
Slide ShowApplet: Design
• User Interface Design: Painting Imagespublic void paint(Graphics g) { if (currentImage != null) g.drawImage(currentImage, 10, 10, this);}
• Algorithm: Reduce network traffic by downloading images once into an array.
• Callback method: nextSlide() called repeatedly by the timer.
![Page 18: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/18.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
The Slide Show Applet (cont)
• Storing the Images:
private static final int NIMGS = 3;private Image[] slide = new Image[NIMGS];private Image currentImage = null;private int nextImg = 0;
• Displaying the images:
public void paint(Graphics g) { g.setColor(getBackground()); g.fillRect(0, 0, WIDTH, HEIGHT); if (currentImage != null) g.drawImage(currentImage, 10, 10, this);} //paint()
public void nextSlide() { currentImage = slide[nextImg]; nextImg = (nextImg + 1) % NIMGS; repaint();} // nextSlide() Design: Callback
method called by timer thread.
![Page 19: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/19.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
SlideShowApplet.init() Method
• Download the images and start the timer.
public void init() { URL url = null; try { for (int k=0; k < NIMGS; k++) { url = new URL("http://www.prenhall.com/morelli/gifs/demo" + k + ".gif") ; slide[k] = getImage( url ); } } catch (MalformedURLException e) { System.out.println("ERROR: Malformed URL: " + url.toString() ); }
Thread timer = new Thread(new Timer(this)); timer.start(); setSize( WIDTH, HEIGHT );} // init()
Timer thread.
Construct the URLs, demo0.gif, demo1.gif, ...
![Page 20: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/20.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
The Timer Class: Implementation
public class Timer implements Runnable { private SlideShowApplet applet; public Timer( SlideShowApplet app ) { applet = app; } public void run() { try { while ( true ) { applet.nextSlide(); Thread.sleep(5000); } } catch (InterruptedException e) { System.out.println(e.getMessage()); } } // run()} // Timer
Needs a reference to the applet.
Repeatedly ask for the next slide.
![Page 21: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/21.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
The RealEstateViewer Application
• Applets have limited use over networks because of security constraints.
• Goal: An application that uses text and images from an online real estate database.
![Page 22: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/22.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
Downloading a Text File from the Web
URL url;InputStream data;try { url = new URL(fileURL); // Create a URL data = url.openStream(); // Open a stream to the URL // READ THE FILE INTO MEMORY // Read the data data.close(); // Close the stream} catch (MalformedURLException e) { // May be thrown by URL() System.out.println(e.getMessage());} catch( IOException e ) { // May be thrown by read or close System.out.println(e.getMessage());}
• Downloading a file uses an input stream:
![Page 23: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/23.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
Reading the Data
private void readTextIntoDisplay(URL url) throws IOException { BufferedReader data = new BufferedReader(new InputStreamReader(url.openStream())); display.setText(""); // Reset the text area String line = data.readLine(); while (line != null) { // Read each line display.append(line + "\n"); // And add it to the display line = data.readLine(); } data.close();} // readTextIntoDisplay()
• Just like reading from a data file:
BufferedReader.readLine()
returns null at end-of-file.
![Page 24: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/24.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
Code Reuse: The java.awt.Toolkit Class
• Use java.awt.Toolkit to download images:
• Example:Image currentImage = Toolkit.getDefaultToolkit().getImage(url);
Method composition.
![Page 25: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/25.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
RealEstateViewer: GUI Design
![Page 26: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/26.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
RealEstateViewer : Classes
Uses
![Page 27: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/27.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
public class RealEstateViewer extends JFrame implements ItemListener { public static final int WIDTH=400,HEIGHT=200; private final String dataFileURL = "http://www.prenhall.com/morelli/homes/homes.txt"; private final String baseURL = "http:// www.prenhall.com/morelli/homes/"; private JTextArea display = new JTextArea(20,20); private JComboBox homeChoice = new JComboBox(); private ImagePanel imagePanel = new ImagePanel(this); public Image currentImage = null;
public RealEstateViewer () {} // Constructor public void itemStateChanged( ItemEvent evt ) { } // ItemListener
public static void main(String args[]) { RealEstateViewer viewer = new RealEstateViewer(); viewer.setSize(viewer.WIDTH,viewer.HEIGHT); viewer.setVisible(true); viewer.addWindowListener(new WindowAdapter() { // Quit public void windowClosing(WindowEvent e) { System.exit(0); } }); } // main()} // RealEstateViewer
import java.awt.*; import java.awt.event.*; import java.net.*; import java.io.*;import javax.swing.*;
Displays the image.
RealEstateViewer : Implementation
![Page 28: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/28.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
The ImagePanel Class
import javax.swing.*;import java.awt.*;
public class ImagePanel extends JPanel {
private RealEstateViewer frame; public ImagePanel(RealEstateViewer parent) { frame = parent; }
public void paintComponent(Graphics g) { if (frame.currentImage != null) g.drawImage(frame.currentImage, 0, 0, this); }} // ImagePanel
Reference to top-level window.
Display the current image.
• The ImagePanel handles the drawing.
![Page 29: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/29.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
Method Design
• Constructor Method:public RealEstateViewer () { super("Home Viewer Application"); // Set the window title homeChoice.addItemListener( this); this.getContentPane().add("North",homeChoice); this.getContentPane().add("East",display); this.getContentPane().add("Center",imagePanel); display.setLineWrap(true); initHomeChoices(); // Set up the choice box showCurrentSelection(); // Display the current home}
public void itemStateChanged(ItemEvent evt) { showCurrentSelection();}
• Handling Menu Selections:
![Page 30: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/30.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
Downloading the Menu Items
• Menu choices downloaded from data file.private void initHomeChoices() { try { URL url = new URL(dataFileURL); BufferedReader data = new BufferedReader(new InputStreamReader(url.openStream())); String line = data.readLine(); while (line != null) { homeChoice.addItem(line); line = data.readLine(); } data.close(); } catch (MalformedURLException e) { System.out.println( "ERROR: " + e.getMessage()) ; } catch (IOException e) { System.out.println( "ERROR: " + e.getMessage()) ; }} // initHomeChoices()
The file’s URL.
Add to choice box.
![Page 31: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/31.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
Downloading Home Information
private void showCurrentSelection() { URL url = null; String choice = homeChoice.getSelectedItem().toString(); // Get choice try { url = new URL(baseURL + choice + ".txt") ; // Create url readTextIntoDisplay(url); // Download and display text file url = new URL(baseURL + choice + ".gif"); // Download image currentImage = Toolkit.getDefaultToolkit().getImage(url); Toolkit.getDefaultToolkit().beep(); // Alert the user repaint(); } catch (MalformedURLException e) { System.out.println( "ERROR: " + e.getMessage()) ; } catch (IOException e) { System.out.println("ERROR: " + e.getMessage()) ; }} // showCurrentSelection()
Use the Toolkit.
• Get user’s menu choice and download.
![Page 32: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/32.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
Home Viewer
![Page 33: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/33.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
Reusing Code
• Object Oriented Design: Reuse existing methods and classes.
• Effective Design: Before writing code to perform a particular task, search the available libraries to see if there is already code that performs that task.
![Page 34: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/34.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
Client/Server Communication via Sockets
• A socket is a two-way communication channel.
• A server program creates a socket at a certain port and waits for a client to request a connection.
• Client-server communication is based on a well-defined protocol.
• Example: A Web server uses port 80 and the HTTP Protocol.
![Page 35: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/35.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
Socket Streams
• Each socket has two streams, one for input and one for output.
• Analogy: two-way phone call. – Server: Waits for phone to ring then begins
service.– Client: Dials the service phone number (URL),
makes a connection to it and requests service.
![Page 36: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/36.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
Basic Server Protocol
• Pseudocode:
• Java:Socket socket; // Reference to the socketServerSocket port; // The port where the server will listentry { port = new ServerSocket(10001, 5); // Create a port socket = port.accept(); // Wait for client call
// Communicate with the client
socket.close();} catch (IOException e) { e.printStackTrace();}
1. Create a SocketServer and port number.2. Listen for and accept a connection from a client.3. Converse with the client.4. Close the socket.
![Page 37: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/37.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
Basic Client Protocol
• Pseudocode:
• Java:Socket connection; // Reference to the sockettry { connection = new Socket("troy.cs.trincoll.edu", 10001);// Connect // Carry on a two-way communication
connection.close(); // Close the socket} catch (IOException e ) { e.printStackTrace();}
1. Open a socket connection to the server, given its address.2. Converse with the server.3. Close the connection.
![Page 38: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/38.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
Client/Server Design
Both client and server are
threads that share I/O methods.
![Page 39: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/39.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
The writeToSocket() Method
• A method to write a string to a socket:protected void writeToSocket(Socket sock, String str)
throws IOException { oStream = sock.getOutputStream(); for (int k = 0; k < str.length() ; k++) oStream.write(str.charAt(k));} // writeToSocket()
• A socket automatically creates its own streams.
• Don’t close the socket stream after an I/O operation unless you are done with the socket.
Write each byte.
Get the output stream.
![Page 40: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/40.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
The readFromSocket() Method
• A method to read from a socket:protected String readFromSocket(Socket sock) throws IOException { iStream = sock.getInputStream(); String str=""; char c; while ( ( c = (char) iStream.read() ) != '\n') str = str + c + ""; return str;}
• Protocol Design: If the client writes bytes, the server must read bytes, and vice versa.
Read each byte and convert to char.
Get the input stream.
![Page 41: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/41.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
Case Study: A Generic Client/Server
• Problem Statement: Design generic client/server classes that can be used for a wide variety of services.
• Use inheritance and polymorphism to design methods that can be used by a variety of subclasses.
• Communication will take place using strings, as in the previous examples.
![Page 42: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/42.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
Test Case: An Echo Service
• Test Case: An echo service.CLIENT: connected to 'troy.cs.trincoll.edu'SERVER: Hello, how may I help you?CLIENT: type a line or 'goodbye' to quitINPUT: helloSERVER: You said 'hello'INPUT: this is funSERVER: You said 'this is fun'INPUT: goodbyeSERVER: GoodbyeCLIENT: connection closed
Keyboard input.
Echo server at troy.cs.trincoll.edu/157.252.16.21 waiting for connectionsAccepted a connection from troy.cs.trincoll.edu/157.252.16.21Closed the connection
Accepted a connection from troy.cs.trincoll.edu/157.252.16.21Closed the connection
Client Side:
ServerSide:
![Page 43: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/43.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
Design: EchoServer and EchoClient
Provides the specific service.
Requests a specific service.
![Page 44: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/44.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
Problem Decomposition
Shared methods go
here.
Basic client/server protocol defined here.
Specific echo service defined here.
• Object Oriented Design:
![Page 45: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/45.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
Development Strategy
ClientServer
EchoServer EchoClient
Server Client
Final Design
Initial Design ClientServer
EchoServer EchoClient
Abstraction
• We will generalize EchoServer and EchoClient to produce Server and Client.
![Page 46: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/46.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
import java.io.*; import java.net.*;
public class ClientServer extends Thread { protected InputStream iStream; // Inheritable variables protected OutputStream oStream;
protected String readFromSocket(Socket sock) throws IOException { iStream = sock.getInputStream(); String str=""; char c; while ( ( c = (char) iStream.read() ) != '\n') str = str + c + ""; return str; } // readFromSocket()
protected void writeToSocket(Socket sock, String str) throws IOException { oStream = sock.getOutputStream(); if (str.charAt( str.length() - 1 ) != '\n') str = str + '\n'; for (int k = 0; k < str.length() ; k++) oStream.write(str.charAt(k)); } // writeToSocket()} // ClientServer
The ClientServer Superclass
Shared methods.
A Thread subclass.
![Page 47: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/47.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
The EchoServer Class
import java.net.*;import java.io.*;
public class EchoServer extends ClientServer {
private ServerSocket port; private Socket socket;
public EchoServer(int portNum, int nBacklog) { try { port = new ServerSocket (portNum, nBacklog); } catch (IOException e) { e.printStackTrace(); } } public void run() { } // Stub method} // EchoServer
Extends ClientServer
To be completed.
Catch IOException.
![Page 48: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/48.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
The EchoServer.run() Method
public void run() { try { System.out.println("Echo server at " + InetAddress.getLocalHost() + " waiting for connections "); while(true) { socket = port.accept(); System.out.println("Accepted a connection from " + socket.getInetAddress()); provideService(socket); socket.close(); System.out.println("Closed the connection\n"); } } catch (IOException e) { e.printStackTrace(); }} // run()
Infinite loop.
Provide some service.
Accept connection.
![Page 49: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/49.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
The provideService() Method
protected void provideService (Socket socket) { String str=""; try { writeToSocket(socket, "Hello, how may I help you?\n"); do { str = readFromSocket(socket); if (str.toLowerCase().equals("goodbye")) writeToSocket(socket, "Goodbye\n"); else writeToSocket( socket, "You said '" + str + "'\n"); } while (!str.toLowerCase().equals("goodbye")); } catch (IOException e) { e.printStackTrace(); }} // provideService()
Inherited from ClientServer.
Protocol Design: service stops when
client says “goodbye”
Lowercase reduces errors.
• Defines the echo protocol.
![Page 50: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/50.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
The EchoClient Class
import java.net.*;import java.io.*;
public class EchoClient extends ClientServer {
protected Socket socket;
public EchoClient(String url, int port) { try { socket = new Socket(url, port); System.out.println("CLIENT: connected to " + url + ":" + port); } catch (Exception e) { e.printStackTrace(); System.exit(1); } } // EchoClient()
public void run() { } // Stub method} // EchoClient
Extends ClientServer.
To be completed.
![Page 51: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/51.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
The EchoClient.run() Method
public void run() { try { requestService(socket); socket.close(); System.out.println("CLIENT: connection closed"); } catch (IOException e) { System.out.println(e.getMessage()); e.printStackTrace(); }} // run()
Service request.
• The client requests the echo service.
![Page 52: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/52.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
The requestService() Method
protected void requestService(Socket socket) throws IOException { String servStr = readFromSocket(socket); // Check for "Hello" System.out.println("SERVER: " + servStr); // Report server’s response System.out.println("CLIENT: type a line or 'goodbye' to quit"); // Prompt if (servStr.substring(0,5).equals("Hello")) { String userStr = ""; do { userStr = readFromKeyboard(); // Get input from user writeToSocket(socket, userStr + "\n"); // Send it to server servStr = readFromSocket(socket); // Read response System.out.println("SERVER: " + servStr); // Report response } while (!userStr.toLowerCase().equals("goodbye")); // Until goodbye }} // requestService()
• Defines the echo protocol.
Utility method.
![Page 53: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/53.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
Testing the Echo Service
• Server’s Computer: public static void main(String args[]) { EchoServer server = new EchoServer(10001, 3); server.start();} // main()
Client’s Computer:
public static void main(String args[]) { EchoClient client = new EchoClient("troy.trincoll.edu",10001); client.start();} // main()
CLIENT: connected to troy.trincoll.edu:10001SERVER: Hello, how may I help you?CLIENT: type a line or 'goodbye' to quitINPUT: this is a testSERVER: You said 'this is a test'INPUT: goodbyeSERVER: GoodbyeCLIENT: connection closed
Client’sSession:
![Page 54: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/54.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
Abstracting the Generic Server
import java.net.*;import java.io.*;
public abstract class Server extends ClientServer {
protected ServerSocket port; protected Socket socket;
public Server(int portNum, int nBacklog) {} // Stub public void run() { } // Stub
protected abstract void provideService(Socket socket); } // Server
• Polymorphism. We define provideService() as an abstract method within a superclass.
Implemented in subclass.
• The constructor and run() methods are the same as in the original EchoServer class.
![Page 55: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/55.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
import java.net.*; import java.io.*;
public class EchoServer extends Server {
public EchoServer( int port, int backlog) { super(port,backlog); } protected void provideService (Socket socket) { String str=""; try { writeToSocket(socket, "Hello, how may I help you?\n"); do { str = readFromSocket(socket); if (str.toLowerCase().equals("goodbye")) writeToSocket(socket, "Goodbye\n"); else writeToSocket(socket, "You said '" + str + "'\n"); } while (!str.toLowerCase().equals("goodbye")); } catch (IOException e) { e.printStackTrace(); } } // provideService() public static void main(String args[]) { EchoServer server = new EchoServer(10001,5); server.start(); } // main()} // EchoServer
Polymorphism: provideService() is
implemented differently for
different services.
The Revised EchoServer
![Page 56: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/56.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
Abstracting the Generic Client
import java.net.*;import java.io.*;
public abstract class Client extends ClientServer { protected Socket socket; public Client(String url, int port) { } // Stub public void run() { } // Stub
protected abstract void requestService(Socket socket) throws IOException;
} // Client
• Polymorphism. We define requestService() as an abstract method within a superclass.
Implemented in subclass.
• The constructor and run() methods are the same as in the original EchoClient class.
![Page 57: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/57.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
import java.net.*; import java.io.*;public class EchoClient extends Client { public EchoClient( String url, int port ) { super(url,port); } protected void requestService(Socket socket) throws IOException { String servStr = readFromSocket(socket); // Check FOR "Hello" System.out.println("SERVER: " + servStr); // Report server's response System.out.println("CLIENT: type a line or 'goodbye' to quit"); // Prompt if ( servStr.substring(0,5).equals("Hello") ) { String userStr = ""; do { userStr = readFromKeyboard(); // Get input from user writeToSocket(socket, userStr + "\n"); // Send it to server servStr = readFromSocket(socket); // Read server's response System.out.println("SERVER: " + servStr); // Report response } while(!userStr.toLowerCase().equals("goodbye")); // Until goodbye } } // requestService() public static void main(String args[]) { EchoClient client = new EchoClient("troy.trincoll.edu", 10001); client.start(); } // main()} // EchoClient
requestService() is polymorphic.
The Revised EchoClient
![Page 58: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/58.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
Effective Design
• Inheritance. By placing client/server functionality into generic superclasses, you can simplify the creation of new services.
• Polymorphism. New services are created by implementing polymorphic methods -- requestService() and provideService().
• Other polymorphic methods: requestService() and provideService() are similar to Applet.init() and Applet.paint() methods.
![Page 59: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/59.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
Java Network Security Restrictions
• Trusted Code: Located in certain files.• Bytecode Verification: Java checks any
untrusted code it receives.• Sandbox Model: Java limits the capabilities
of applets.• Example: An applet can only make socket
connections to its home server.• Untrusted code:
– Limited use of system, thread and AWT methods.
![Page 60: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/60.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
In the Laboratory: The Internet CyberPet
The objectives of this lab are:
• To extend the Server and Client classes to define a new client/server application.
• To write a method that reads a file of stock quotes.
• To incorporate the client object within a CyberPet object.
![Page 61: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/61.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
Lab: Problem Statement
• Design and implement a stock market quote service by extending the generic client/server model. – The server stores stock data in a file– The client requests stock quotes.– The server provides stock quotes.
• Sample Data:
AppleC Apple Computer 45.0Cisco Cisco Systems 103.58Intel Intel 129.25MCSFT Microsoft 150.50Netscpe Netscape 63.87SunMic Sun Microsystems 89.75
![Page 62: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/62.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
Stock Service Lab: Design
• GUI:
• Decomposition (objects):– StockServer supplies stock quotes.– StockClient requests stock quotes for user.– ClientInterface will get the user input and pass it
along to the StockClient object.
![Page 63: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/63.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
Lab Design: StockServer Class
• Subclass of Server.
Read a stock symbol from the client.Look up the symbol's record in stock file.Write a reply to the client.
• Helper Method: getQuoteBySymbol() – Takes a stock symbol as input and returns a quote:– Example: getQuoteBySymbol(“AppleC”) should
returnAppleC Apple Computer 45.0
• Pseudocode for provideService().
![Page 64: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/64.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
Lab Design: StockClient Class
• Subclass of Client.• User initiative: GUI calls
getQuote() so don’t need requestService().
public String getQuote( String symbol ) { String replyStr = ""; // write the symbol to the socket // read the server's reply // say "goodbye" to the server return replyStr;}
StockClient sc = new StockClient( host, port );String result = sc.getQuote( symbol );
![Page 65: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/65.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
Lab: Testing the Quote Service
• Necessary Tests (Stepwise Refinement):– StockServer successfully waits for a connection.– StockServer can find a symbol in the data file.– StockClient successfully makes a connection to
StockServer – StockServer and StockClient successfully
communicate hello/goodbye protocol.– StockClient sends an appropriately formatted
query to StockServer.– StockServer returns the correct result.
![Page 66: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/66.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
Lab: The Stock Quoting CyberPet
• Incorporate a StockClient into a CyberPet interface.
• Possible Designs:– Have CyberPet give up eating, sleeping, or
thinking in favor of making stock quotes!– Have CyberPet make autonomous
recommendations based on the stock quotes --- “You should buy Apple Computer at 60.5.”
– Create your own images for a CyberStockPet and make stock quoting its only activity.
![Page 67: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/67.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
Technical Terms
• busy waiting• callback method• client• client/server protocols• domain name• ethernet protocol• HyperText Transfer
Protocol (HTTP)• internet• Internet• internetworking protocol
(IP)
• packet • port• protocol• router• sandbox security model• server• socket• trusted code• Uniform Resource Locator
(URL)• World Wide Web (WWW)
![Page 68: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/68.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
Summary Of Important Points
• An internet is a collection of two or more distinct networks joined by routers, which translate one network's language to the other's. The Internet uses the Internet Protocol (IP) as the translation medium.
• A protocol is a set of rules that control the transfer of information between two computers in a network. ( HyperText Transfer Protocol (HTTP), Simple Mail Transfer Protocol (SMTP), File Transfer Protocol (FTP).
![Page 69: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/69.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
Summary Of Important Points (cont)
• A client/server application divides its task between a client, which requests service, and a server, which provides service.
• Lower-level protocols, such as the ethernet protocol and token ring protocol, govern the transmission of data between computers on a single network.
• A Uniform Resource Locator (URL) is standard way of specifying addresses on the Internet.
![Page 70: JAVA, JAVA, JAVA Object-Oriented Problem Solving Ralph Morelli Trinity College Hartford, CT presentation slides for published by Prentice Hall Second Edition](https://reader038.vdocuments.us/reader038/viewer/2022102818/56649f575503460f94c7b350/html5/thumbnails/70.jpg)
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 15: Sockets
Summary Of Important Points (cont)
• Files of text or data (images, audio files) on the Internet or Web can be downloaded using InputStreams and OutputStreams.
• The java.awt.Toolkit contains methods for downloading images into an application.
• A socket is a two-way communication channel between two running programs on a network.
• The java.net.Socket class is used to set up sockets for client/server applications.