// File: IO8_server_plain.java (Module 13) // // Author: Rahul Simha // Created: Nov 13, 2000. // // Producer as server, using sockets. import java.io.*; import java.net.*; class Producer implements Runnable { OutputStream outStream; public Producer (OutputStream outStream) { // Store the reference to the output stream. this.outStream = outStream; } // Must implement the run() method. public void run () { // Write 25 random bytes to the buffer. for (int i=1; i<=25; i++) { // Create a random byte byte k = (byte) UniformRandom.uniform (1, 100); // Write it to the screen. System.out.println ("Producer: writing " + k); // Write integer to buffer. try { outStream.write (k); } catch (IOException e) { System.out.println (e); } // Sleep for a while. try { Thread.sleep ((int)UniformRandom.uniform(100,1000)); } catch (InterruptedException e) { System.out.println (e); } } // Write EOF and close output stream. try { outStream.write (-1); outStream.close (); } catch (IOException e) { System.out.println (e); } } } public class IO8_server_plain { public static void main (String[] argv) { try { // Create a listening service for connections // at the designated port number. ServerSocket srv = new ServerSocket (40013); // When a connection is made, get the socket. // The method accept() blocks until then. System.out.println ("Producer as server: waiting for a connection"); Socket soc = srv.accept (); // At this stage, the connection will have been made. InetAddress remoteMachine = soc.getInetAddress(); System.out.println ("Consumer as server: accepted a connection" + " from " + remoteMachine); // We are going to write, so get the output stream. OutputStream outStream = soc.getOutputStream (); // Create a producer instance and thread. Producer p = new Producer (outStream); Thread pthread = new Thread (p); // Start the threads. pthread.start(); } catch (IOException e) { System.out.println (e); } } }