Java tutorial
// WriteObjectsFromSocket - Read Objects from a Socket and save them // // Copyright (C) 1996 by Rinaldo Di Giorgio <rinaldo@digiorgio.com>. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // 1. Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // 2. Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF // SUCH DAMAGE. /* * Accept a connection and read some serialized * data until the stream is closed. Once it is closed * write the data to a disk file. * This program always writes to /tmp/Object. */ import java.io.DataInputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; /** */ class WriteObjectsFromSocket { public static void main(String args[]) { Socket rs; ServerSocket s; int PortNumber = 2000; // Fixed port boolean acceptLoop = true; ReaderWriter readerwriter = null; System.out.println("WriteFileFromSocket Running"); // //////////////////////////////////////////////////////////////// // Open a socket on this server and listen for a connection // Look for data if we get here that is requests // //////////////////////////////////////////////////////////////// try { System.out.println("Waiting to accept connection"); s = new ServerSocket(PortNumber); } catch (Exception e) { System.out.println("Unable to open port" + PortNumber); return; } while (acceptLoop) { try { rs = s.accept(); // Accept connections } catch (Exception e) { System.out.println("Accept failed port" + PortNumber); return; } readerwriter = new ReaderWriter(rs); // Start a thread to read the input } } } /** * Manage the writing of the file being read from a client */ class ReaderWriter extends Thread { byte b[] = null; int inputByte = 0; String directory = null; String filename = null; DataInputStream is; FileOutputStream localFile = null; boolean writeloop = true; ReaderWriter(Socket rs) { // ///////////////////////////////////////////// // Open a remote stream to the client // ///////////////////////////////////////////// try { is = new DataInputStream(rs.getInputStream()); } catch (Exception e) { System.out.println("Unable to get Stream"); return; } // ///////////////////////////////////////////// // Open the file that is to be written to // ///////////////////////////////////////////// try { File theFile = new File("/tmp", "Objects"); System.out.println("The file to be created or overwritten: " + theFile); localFile = new FileOutputStream(theFile); } catch (IOException e) { System.out.println("Open error " + e); return; } // /////////////////////////////////////////// // Look for all the double data constantly // /////////////////////////////////////////// while (writeloop) { // Look for data if we get here that is requests try { inputByte = is.readByte(); // Not the best way to do it // Consider looking for available bytes // and reading that amount. } catch (IOException e) { System.out.println("In the read loop:" + e); writeloop = false; } // /////////////////////////// // We did get something // Write The Data // /////////////////////////// try { localFile.write(inputByte); } catch (IOException e) { System.out.println("Write failed"); writeloop = false; } } // //////////////////////////////// // Close the connection and file // //////////////////////////////// try { rs.close(); is.close(); localFile.close(); } catch (Exception e) { System.out.println("Unable to close "); } System.out.println("Thread exiting"); } }