Pôxa, é preciso muita boa vontade pra baixar um arquivo .zip, contendo arquivos .class. A maioria dos antivirus e navegadores bloqueiam o download, achando que é vírus.
Você poderia ter postado suas 4 classes aqui no fórum.
Aparentemente tem muita coisa estranha na forma como você implementou seu trabalho.
O problema de você não estar recebendo dados na sua classe Receptor, é porque sua classe Transmissor nunca envia nada.
String res = q.toString();
System.out.println("Informação enviada para o servidor com sucesso.");
System.out.println("O quadro ethernet enviado para o servidor foi: " + res);
/* recebe dados -> Servidor para cliente. */
ObjectInputStream input = new ObjectInputStream(sock.getInputStream());
String str = (String) input.readObject();
System.out.println("A informação recebida do servidor é: " + str);
Observe o código acima, você apresenta uma mensagem dizendo que enviou os dados pro servidor, mas cadê o código que enviou os dados?
Não foi implementado!
Outras coisas estranhas:
if (tamanho > 0 || tamanho < 2000) {
if (tamanho < 1500) {
QuadroEthernet q1 = new QuadroEthernet();
QuadroEthernet q = q1.criaquadro(tamanho, macorigem, macdestino);
enviaerecebe(q);
System.out.println("Vejamos: " + q.toString());
} else {
int metade = tamanho / 2;
QuadroEthernet q1 = new QuadroEthernet();
QuadroEthernet q3 = q1.criaquadro(metade, macorigem, macdestino);
enviaerecebe(q3);
QuadroEthernet q2 = new QuadroEthernet();
QuadroEthernet q4 = q2.criaquadro(metade, macorigem, macdestino);
enviaerecebe(q4);
}
}
Você instancia um objeto do tipo QuadroEthernet e daí usa essa instância pra instanciar outro objeto do tipo QuadroEthernet, não faz o menor sentido.
O pior é que todos os atributos da sua classe QuadroEthernet são estáticos, o que é mais estranho ainda.
Você também implementou um método de cerca de 150 linhas e 17 if-else aninhados pra validar o formato de um endereço mac, coisa que pode ser feita com expressão regular em 2~3 linhas, até em 1, dependendo da forma como programa.
Você também está utilizando ObjectOutputStream para enviar somente Strings e não objetos inteiros, também não faz sentido.
Recomendo dar uma estudada na API do Java e principalmente aprender lógica e programação orientada a objetos.