Skip to content

Latest commit

 

History

History
148 lines (110 loc) · 3.66 KB

Documentation.md

File metadata and controls

148 lines (110 loc) · 3.66 KB

// The following illustrates poor documentation.
// See below for a better version.
//***********************************************************
import java.net.*;
import java.io.*;

public class UDPClient {

public static void main(String args[]) {

if(args.length != 3) {

    System.out.println("usage:java UDPClient operand operator operand");
    System.exit(0);
}

DatagramSocket aSocket = null;

try {
    aSocket = new DatagramSocket();

    byte m[] = (args[0] +" " + args[1] + " " + args[2]).getBytes();

    InetAddress aHost = InetAddress.getByName("localhost");
    int serverPort = 6502;

    DatagramPacket request = new DatagramPacket(
    m, m.length, aHost, serverPort);

    aSocket.send(request);

    byte buffer[] = new byte[40];

    DatagramPacket reply = new DatagramPacket(buffer,buffer.length);
    aSocket.receive(reply);

    System.out.println(new String(reply.getData()));

}
catch(SocketException e) {
    System.out.println("Socket: " + e.getMessage());
}
catch(IOException e) {
    System.out.println("IO: " + e.getMessage());
}
finally {
    if(aSocket != null) aSocket.close();
    }
  }
}

//****************************************************************
// A better version.


/**
* Author: Michael McCarthy
* Last Modified: May 27, 2009
*
* This program demonstrates a very simple UDP client.
* The command line contains two operands and an operator.
* The command line is packaged and placed in a single UDP packet.
* The packet is sent to the server asynchronously.
* The program then blocks waiting for the server to perform
* the requested operation. When the response packet arrives,
* a String object is created and the reply is displayed.
* The program illustrates the marshaling and un-marshaling
* of requests and replies. It also demonstrates that UDP
* style sockets are quite different from TCP style sockets.
*/

// imports required for UDP/IP

import java.net.*;
import java.io.*;

public class UDPClient {

/**
* Command line arguments.
*
* @param args[0] operand (double)
* @param args[1] operator (+, *, -, /)
* @param args[2] operand (double)
*/

public static void main(String args[]) {

    if(args.length != 3) {

    System.out.println("usage:java UDPClient operand operator operand");
    System.exit(0);
}

// define a Datagram (UDP style) socket
DatagramSocket aSocket = null;

try {

    aSocket = new DatagramSocket();

    // build packet contents by string concatenation
    byte m[] = (args[0] +" " + args[1] + " " + args[2]).getBytes();

    // build an InetAddress object from a DNS name  
    InetAddress aHost = InetAddress.getByName("localhost");

    // the testing port is 6502
    int serverPort = 6502;

    // build the packet holding the destination address, port and
    // byte array constructed from the command line arguments
    DatagramPacket request = new DatagramPacket(
    m, m.length, aHost, serverPort);

    // send the Datagram on the socket
    aSocket.send(request);

    // prepare room for the reply
    byte buffer[] = new byte[40];

    // build a datagram for the reply
    DatagramPacket reply = new DatagramPacket(buffer,buffer.length);

    // block and wait
    aSocket.receive(reply);

    // show the result to the client
    System.out.println(new String(reply.getData()));

  }
  // handle socket exceptions
    catch(SocketException e) {
         System.out.println("Socket: " + e.getMessage());
   }
   // handle general I/O exceptions
   catch(IOException e) {
        System.out.println("IO: " + e.getMessage());
   }
finally {
    // always close the socket
     if(aSocket != null) aSocket.close();
    }
  }
}