Re: UDP applet
here is the class which is supposed to measure the ping time within
the applet
package P;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.*;
import java.io.*;
public class Ping {
static InetAddress serveur;
static String payload;
static DatagramSocket socket;
static DatagramPacket dataSent;
static DatagramPacket dataRecieved ;
public static String getRemotePage(String urlPath)
{
try {
//On cr=E9e l'URL
URL url = new URL(urlPath);
//On cr=E9e une connection vers cet URL
URLConnection connection = url.openConnection( );
//On r=E9cup=E8re la taille du fichier
int length = connection.getContentLength();
//Si le fichier est inexestant, on lance une exception
if(length == -1){
System.err.println("empty page !!");
}
//On r=E9cup=E8re le flux du fichier
InputStream is = new
BufferedInputStream(connection.getInputStream());
//On pr=E9pare le tableau de bits pour les donn=E9es du fichier
byte[] data = new byte[length];
is.read(data);
String s=new String(data);
System.out.println(" page content="+s);
return s;
}
catch (Exception e)
{
e.printStackTrace();
return "";
}
}
public static void getReady(BandePassante monapplet) {
try {
String s=getRemotePage(monapplet.getCodeBase()+"UDPServer.Aspx?
start=Y");
if (s.indexOf("Server started")<0)
System.err.println("Could not start UDP Server!!");
else
System.out.println("page="+s);
serveur = InetAddress.getByName(monapplet.host);
payload="";
int length = payload.length();
byte buffer[] = payload.getBytes();
dataSent =
new DatagramPacket(buffer,length,serveur, 7777);
socket = new DatagramSocket();
socket.setSoTimeout(800);
dataRecieved = new DatagramPacket(new byte[length],length);
// let some time to the server start
Thread.sleep(300);
for(int i=0;i<2;i++)
System.out.println("First drop few ping :"+Ping.go());
}
catch (Exception e)
{
e.printStackTrace();
}
}
public static long go() {
try {
System.out.println("send packet");
long t1=System.currentTimeMillis();
socket.send(dataSent);
socket.receive(dataRecieved);
long t2=System.currentTimeMillis();
return (t2-t1);
}catch (Exception e)
{
e.printStackTrace();
return -1;
}
}
}