UDPPokepublic class UDPPoke extends Object
Fields Summary |
---|
private int | bufferSize | private DatagramSocket | ds | 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;
ds = new DatagramSocket(0);
ds.connect(host, port); // requires Java 2
ds.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 void | main(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 e) {
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 e) {
System.err.println(e);
e.printStackTrace();
}
| public byte[] | poke()
byte[] response = null;
try {
ds.send(outgoing);
DatagramPacket incoming
= new DatagramPacket(new byte[bufferSize], bufferSize);
// next line blocks until the response is received
ds.receive(incoming);
int numBytes = incoming.getLength();
response = new byte[numBytes];
System.arraycopy(incoming.getData(), 0, response, 0, numBytes);
}
catch (IOException e) {
// response will be null
}
// may return null
return response;
|
|