WriteDoubleUsingSockets.java Source code

Java tutorial

Introduction

Here is the source code for WriteDoubleUsingSockets.java

Source

// WriteDoubleUsingSockets - Client side that writes some objects to a stream
//
// 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.
import java.applet.Applet;
import java.awt.Label;
import java.io.DataOutputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.util.Date;

/**
 * Write some objects over the network to a remote server that reads the stream
 * and procceds to save the objects to disk.
 */
public class WriteDoubleUsingSockets extends Applet {

    DataOutputStream os = null;

    ObjectOutput s = null;

    int PortNumber = 2000;

    String ServerName = "traveler";

    /**
     * Set the server and port name
     */
    public void initMain(String s, int p) {
        ServerName = s;
        PortNumber = p;
        init();
    }

    public void init() {
        Date d = new Date();
        // Get the portnumber and servername and allow to be called from a
        // java main program also
        try {
            String param;
            param = getParameter("PortNumber");
            if (param != null)
                PortNumber = Integer.parseInt(param);
            param = getParameter("ServerName");
            if (param != null)
                ServerName = param;
        } catch (NullPointerException e) { // Must be called from a main ignore
        }
        try {
            Socket skt = new Socket(ServerName, PortNumber);
            os = new DataOutputStream(skt.getOutputStream());
        } catch (Exception e) {
            Label l = new Label(e.toString());
            add(l);
            System.out.println(e);
            return;
        }
        try {
            s = new ObjectOutputStream(os);
        } catch (Exception e) {
            System.out.println(e);
            System.out.println("Unable to open stream as an object stream");
        }
        try {
            long startTime = System.currentTimeMillis();
            for (int i = 0; i < 25; i++) {
                s.writeObject(new Double(i));
            }
            os.close();
            long endTime = System.currentTimeMillis() - startTime;
            Label l = new Label(
                    "Writing 25 doubles server took: " + new Long(endTime).toString() + " milliseconds.");
            add(l);
            System.out.println("Object written");
        } catch (Exception e) {
            System.out.println(e);
            System.out.println("Unable to write Objects");
        }
    }

    // //////////////////////////////////////////////////////////////////////////
    // Example of an applet and a main sharing code and be parameter
    // driven.
    // //////////////////////////////////////////////////////////////////////////
    public static void main(String args[]) {
        WriteDoubleUsingSockets showSavingAClassNet = new WriteDoubleUsingSockets();
        if (args.length < 2) {
            System.out.println("Usage: ServerName PortNumber");
            System.exit(0);
        } else {
            String ServerName = new String(args[0]); // Notice local scope of
                                                     // ServerName and PortNumber
            int PortNumber = Integer.parseInt(args[1]);
            showSavingAClassNet.initMain(ServerName, PortNumber);
        }
    }
}