[Resolvido]Dúvida sobre Socket : verificação de bit paridade (ACK + SRC)

Blza , galera

Bom estou com dúvidas em sockets - mais uma vez este tema de novo, como eu vi em vários fóruns aqui, desculpa aé moderadores … :lol:

A dúvida e o seguinte tenho que fazer um jogo de xadrez -simples, né? - fazendo comunicação via socket com uma outra máquina(cliente) , diga-se de passagem por UDP e não por [color=red]TCP/IP[/color], bom até aí … deu pra levar … mas o infeliz(meu professor trabalha com C, acho que por isso a revolta com Java … hauha ), pediu que fizesse a verificação dos dados (???) por UDP (1000 X ?).

Então , galera, tem como vc´s me indicaram um site ou algum lugar que eu pudesse pesquisar pra saber como “escovar bits” neste pacotes mandados via cliente-servidor.

Bom vou colocar os códigos de conexão aqui, por desencargo.


import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;

public class Servidor {

	public static void main(String args[]) throws Exception {

		DatagramSocket faz_conexao = null;

		byte[] recebe_dados = new byte[128];
		byte[] manda_dados = new byte[128];

		try {
			faz_conexao = new DatagramSocket(5000); // faz conexão nesta porta.
		} catch (SocketException e) {
			e.printStackTrace();
		}

		System.out.println("Fazendo conexão por protocolo UDP na porta:  "
				+ faz_conexao.getLocalPort());
		System.out.println("Conectado ");

		while (true) { // fica " escutando "
			DatagramPacket recebe_pacote = new DatagramPacket(recebe_dados,
					recebe_dados.length);
			System.out.println("Esperando dados na porta: "
					+ faz_conexao.getLocalPort());
			faz_conexao.receive(recebe_pacote);
			String dados = new String(recebe_pacote.getData());
			dados = dados.trim(); // completa a string com caracters nulos ..
			InetAddress endereco_ip = recebe_pacote.getAddress();
			int porta = recebe_pacote.getPort(); // na unha , mesmoo .. ,

			String transforma = dados.toUpperCase(); // Transforma a String
			// em >

			String[] quebra = dados.split("\.");
			for (int i = 0; i < quebra.length; i++) {
				System.out.println("Quebra da String: " + quebra[i]);
			}
			manda_dados = dados.getBytes();

			System.out.println("Pacote recebido : " + dados + "do IP: "
					+ endereco_ip.toString());

			manda_dados = transforma.getBytes();

			DatagramPacket manda_pacote = new DatagramPacket(manda_dados,
					transforma.length(), endereco_ip, porta);
			faz_conexao.send(manda_pacote);

			/*******************************************************************
			 * 
			 * TESTE 02 DatagramPacket manda_pacote = new
			 * DatagramPacket(manda_dados, quebra.length, endereco_ip, porta);
			 * faz_conexao.send(manda_pacote); System.out.println(" Pacote
			 * enviado: " + transforma + " para: " + endereco_ip.toString());
			 * System.out.println(" Pacote enviado: " + quebra + " para: " +
			 * endereco_ip.toString());
			 ******************************************************************/
		}

	}
}

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

public class ConexaoCliente {
	public static void main(String[] args) throws Exception {
		String texto_teste = " "; // "Pacote" com os dados dentro ..
		String texto_teste2 = " ";
		texto_teste = new String(" Estar a mandar o texto");
		/***********************************************************************
		 * TESTE 02
		 * 
		 * texto_teste2 = new String(" 1\.e4e5 " + "2\.Cf3 " // 1 - jogador 1 +
		 * "2\.Cc6" // 2- jogador 2 + "3\.Bb5a6 ");
		 * http://pt.wikipedia.org/wiki/Nota%C3%A7%C3%A3o_alg%C3%A9brica_de_xadrez
		 **********************************************************************/
		DatagramSocket conexao_cliente = new DatagramSocket();
		InetAddress endereco_ip = InetAddress.getByName("127.0.0.1"); // O
		// velho
		// e bom
		// 127.0.0.1
		byte[] manda_dados = new byte[128];
		byte[] recebe_dados = new byte[128];

		manda_dados = texto_teste.getBytes(); // pega o texto e manda e
		// transforma em binário que no servidor
		// manda_dados = texto_teste2.getBytes();// vai virar tudo em maiscula.

		DatagramPacket manda_pacote = new DatagramPacket(manda_dados,
				manda_dados.length, endereco_ip, 5000); // Cria o pacote e manda
		// ..
		conexao_cliente.send(manda_pacote); // Jogadinha legal.. aki

		DatagramPacket recebe_pacote = new DatagramPacket(recebe_dados,
				recebe_dados.length); // Recebe o pacote do sevidor..
		conexao_cliente.receive(recebe_pacote); // idem ...

		String dados = new String(recebe_pacote.getData());
		dados = dados.trim();
		System.out
				.println(" Pacote recebido do servidor transformado em MAIUSCÚLA : "
						+ dados);
	}
}
// A saída no console tem que ser esta:
// Pacote recebido do servidor : ESTAR A MANDAR O TEXTO


Abraços, a todos.

já ouviu falar em hash?
será que no seu caso nao ajuda?

Fala moacirjava, tranquilo cara ?. Na esperança que sim …

Então , já ouvi falar sim cara mas eu eu tenho que “escovar os bytes” mesmos ( eu tenho que ver o número de bytes no pacote mandado e verificar no servidor se bate o numero de pacote, se não der um resultado par (por exemplo), o pacote está com erro), por hash eu apenas criptografo a minha msg(pacote)e verifico no servidor se consigo ler … se na verificação ele ver que está com erro ele entra nas suas verificaçãoes da vida.

Bom, pode ser que uma alternativa, moacirjava , se tem algum exemplo … aé fácil " hasheado " ? .

Abraços, cara …

[b]Apesar de demorar em responder, já solucionei … !!
Deu trampo … hahaua

Abraços a todos. [/b]