pingclient

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • sobreironn
    New Member
    • Mar 2008
    • 1

    pingclient

    hi,
    i have a ping server and i need to change de code to make a ping cliente to interact with the ping server, to print the time that the ping takes, to send also a ping per sec, like a normal ping, and all of this with UDP, and i need to create something like TCP to know is all the packages arrive ok. this is the code for de ping server. can i have some help? thanks

    import java.io.*;
    import java.net.*;
    import java.util.*;
    /* Servidor para processar pedidos ping sobre UDP */
    public class PingServer
    {
    private static final double LOSS_RATE = 0.3;
    private static final int AVERAGE_DELAY = 100; // milissegundos
    public static void main(String[] args) throws Exception
    {
    // Obter o argumento da linha de commando.
    if (args.length != 1) {
    System.out.prin tln("argumentos exigidos: porta");
    return;
    }
    int port = Integer.parseIn t(args[0]);
    // Criar um gerador de números aleatórios para ser usado na
    // simulação de perda de pacotes e do atraso na rede.
    Random random = new Random();
    // Criar um socket datagrama para receber e enviar pacotes UDP
    // através da porta especificada na linha de comando.
    DatagramSocket socket = new DatagramSocket( port);
    // Ciclo do processo.
    while (true) {
    Redes de Computadores I – 2007/08 – Trabalho Prático Prog2 2/5
    // Criar um pacote datagrama para armazenar o pacote UDP recebido.
    DatagramPacket request = new DatagramPacket( new byte[1024], 1024);
    // Bloquear até que a máquina receba um pacote UDP.
    socket.receive( request);
    // Imprimir os dados recebidos.
    printData(reque st);
    // Decidir se vai responder ou se vai simular a perda do pacote.
    if (random.nextDou ble() < LOSS_RATE) {
    System.out.prin tln(" Resposta nao enviada.");
    continue;
    }
    // Simular o atraso na rede.
    Thread.sleep((i nt) (random.nextDou ble() * 2 * AVERAGE_DELAY)) ;
    // Enviar resposta.
    InetAddress clientHost = request.getAddr ess();
    int clientPort = request.getPort ();
    byte[] buf = request.getData ();
    DatagramPacket reply =
    new DatagramPacket( buf, buf.length, clientHost, clientPort);
    socket.send(rep ly);
    System.out.prin tln(" Resposta enviada.");
    }
    }
    /* Imprimir os dados do ping na stream de saida standard. */
    private static void printData(Datag ramPacket request) throws Exception
    {
    // Obter referencias ao array de bytes do pacote.
    byte[] buf = request.getData ();
    // Colocar os bytes num stream de entrada byte array
    // por forma a ler os dados como um stream de bytes.
    ByteArrayInputS tream bais = new ByteArrayInputS tream(buf);
    // Colocar o stream de saida byte array num leitor de stream de
    // entrada para poder ler os dados como um stream de caracteres.
    InputStreamRead er isr = new InputStreamRead er(bais);
    // Colocar o leitor do stream de entrada num leitor com buffer
    // para poder ler os caracteres uma linha de cada vez.
    // (Uma linha é uma sequência de chars terminada por qualquer
    // combinação de \r e \n.)
    BufferedReader br = new BufferedReader( isr);
    // Como os dados da mensagem estão contidos numa única linha,
    // ler essa linha.
    String line = br.readLine();
    // Imprimir o endereço da máquina e os dados dela recebidos.
    System.out.prin tln(
    "Recebido de " +
    request.getAddr ess().getHostAd dress() + ": " + new String(line) );
    Redes de Computadores I – 2007/08 – Trabalho Prático Prog2 3/5
    }
    }
  • pronerd
    Recognized Expert Contributor
    • Nov 2006
    • 392

    #2
    Originally posted by sobreironn
    can i have some help?
    Help with what? What specifically is your question?

    Comment

    Working...