import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.net.*; public class TCPClient { int inicioJanela = 0; byte[] xic_Smb = new byte[9]; byte[] resposta = new byte[9]; byte respostaSeq = -1; long respostaTmp; boolean[] recebido = new boolean[10]; boolean podeEnviar = true; long tempoEnvio; long tempoEspera; long diferenca; DatagramSocket cliente; InetAddress IPAdress; DatagramPacket input; DatagramPacket output; private class Envio extends Thread { public synchronized void run() { for (int i = 0; i < 10; i++) { tempoEnvio = System.currentTimeMillis(); System.out.println(tempoEnvio); Long temp = tempoEnvio; for (int j = 0; j < 8; j++) { Long temp1 = Long.rotateRight(tempoEnvio, j * 8); Byte tmp = temp1.byteValue(); xic_Smb[j + 1] = tmp; } Integer numeroSq = i; xic_Smb[0] = numeroSq.byteValue(); output = new DatagramPacket(xic_Smb, xic_Smb.length, IPAdress,9000); try { cliente.send(output); } catch (IOException e) { e.printStackTrace(); } do { tempoEspera = System.currentTimeMillis(); diferenca = tempoEspera - tempoEnvio; } while (diferenca < 1000); } } } public class Temporizador extends Thread { public long IniciaTemporizador(int numeroDeSequencia , int tempoInicial){ long tempoRetorno = System.currentTimeMillis() - tempoInicial; return tempoRetorno; } public void run (){ this.IniciaTemporizador(); } } private class Recebimento extends Thread { public synchronized void run() { int numeroSeqExp = 0; while (inicioJanela < 10) { try { System.out.println(" " + cliente.getReceiveBufferSize()); input = new DatagramPacket(resposta, resposta.length); cliente.receive(input); respostaSeq = input.getData()[0]; respostaTmp = 0; for (int i = 0; i < 8; i++) { Byte respostaTmp1 = input.getData()[i + 1]; Long tmp = respostaTmp1.longValue(); if (tmp < 0) { tmp = 256 + tmp; } tmp = Long.rotateLeft(tmp, 8 * i); respostaTmp = respostaTmp + tmp; } } catch (IOException e) { System.out.println("ctrl+a e ctrl+i ¬¬ "); e.printStackTrace(); } Byte ind = respostaSeq; long tempoAtual = System.currentTimeMillis(); long respostaDoTempo = tempoAtual - respostaTmp; System.out.println(" tempoAtual = " + tempoAtual); System.out.println( respostaTmp + " respostaTmp"); System.out.println("cont" + respostaSeq + " tempo "+ respostaDoTempo); recebido[inicioJanela] = true; inicioJanela = inicioJanela + 1; } } } TCPClient() throws UnknownHostException, IOException { cliente = new DatagramSocket(); IPAdress = InetAddress.getByName("G3C29"); Thread envio = new Envio(); Thread recebido = new Recebimento(); envio.start(); recebido.start(); } public static void main(String[] args) throws UnknownHostException, IOException { new TCPClient(); } }