FileDocCategorySizeDatePackage
UDPPoke.javaAPI DocExample2297Sun Dec 12 10:54:06 GMT 2004None

UDPPoke

public class UDPPoke extends Object

Fields Summary
private int
bufferSize
private DatagramSocket
socket
private DatagramPacket
outgoing
Constructors Summary
public UDPPoke(InetAddress host, int port, int bufferSize, int timeout)


    outgoing = new DatagramPacket(new byte[1], 1, host, port);
    this.bufferSize = bufferSize;
    socket = new DatagramSocket(0);
    socket .connect(host, port); // requires Java 2
    socket .setSoTimeout(timeout);

  
public UDPPoke(InetAddress host, int port, int bufferSize)

    this(host, port, bufferSize, 30000);
  
public UDPPoke(InetAddress host, int port)

    this(host, port, 8192, 30000);
  
Methods Summary
public static voidmain(java.lang.String[] args)


    InetAddress host;
    int port = 0;

    try {
      host = InetAddress.getByName(args[0]); 
      port = Integer.parseInt(args[1]);
      if (port < 1 || port > 65535) throw new Exception();
    }
    catch (Exception ex) {
      System.out.println("Usage: java UDPPoke host port");
      return;
    }

    try {
      UDPPoke poker = new UDPPoke(host, port);
      byte[] response = poker.poke();
      if (response == null) {
      	System.out.println("No response within allotted time");
      	return;
      }
      String result = "";
      try {
        result = new String(response, "ASCII");
      }
      catch (UnsupportedEncodingException e) {
      	// try a different encoding
      	result = new String(response, "8859_1");
      }
      System.out.println(result);
    }
    catch (Exception ex) {
      System.err.println(ex);	
      ex.printStackTrace();
    }

  
public byte[]poke()

  	
    byte[] response = null;
    try {
      socket .send(outgoing);
      DatagramPacket incoming 
       = new DatagramPacket(new byte[bufferSize], bufferSize);
      // next line blocks until the response is received
      socket .receive(incoming);
      int numBytes = incoming.getLength();
      response = new byte[numBytes];
      System.arraycopy(incoming.getData(), 0, response, 0, numBytes); 
    }
    catch (IOException ex) {
      // response will be null
    } 

    // may return null 
    return response;