Sockets

preciso receber um dado via ethernet e tratá-lo!!! receber é de boa, recebo uma serie de coisas aleatorias, mas nao consigo identificar o que me foi enviado. segue o codigo abaixo e o que aparece no console:

public class UDP_Receive {

private DatagramSocket serverSocket;

private DatagramPacket question, answer;

private String tosend;

private byte[] buffer;

/*
 * Construtor
 */
public UDP_Receive() {
	//vazio
}

/*
 * Método responsavel por receber dados da ethernet
 */
public void receiveMsg_UDP(int porta) throws IOException {
	System.out.println("Pronto para receber e enviar dados via ethernet.");
	
	// Executando na porta 80
	serverSocket = new DatagramSocket(porta);// 80

	// Cria o datagrama para receber uma mensagem
	question = new DatagramPacket(new byte[512],512);

	// aguarda até o recebimento de uma mensagem
	serverSocket.receive(question);
	//Enviando uma resposta
		tosend = "Resposta enviada";
		buffer = tosend.getBytes();
		answer = new DatagramPacket(buffer, buffer.length, question
				.getAddress(), question.getPort());
		serverSocket.send(answer);
	
	
	// ************************************************************
	System.out.println("ANSWER: " + answer);
	System.out.println("QUESTION: " + question);
	System.out.println("BUFFER: " + buffer);
	
	// ************************************************************

	// Fechando o socket
	serverSocket.close();
}

}

o que aparece no console:

ANSWER: java.net.DatagramPacket@89fbe3
QUESTION: java.net.DatagramPacket@f81843
BUFFER: [B@dd5b

Quando você usa “println” para imprimir alguma coisa, ele chama o método “toString” da classe Object, que não foi sobreposto nem por DatagramPacket nem por byte[]. Você precisa imprimir o byte[] manualmente, byte por byte, assim como o conteúdo do buffer do DatagramPacket.

mas como que eu faço pra imprimir esses dados na mao!!!

grato!!!