Mega Code Archive

 
Categories / Java / Network Protocol
 

Write Objects From Socket

// 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");   } }