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.