Hoje uma dica rápida e bem bacana, principalmente para quem está passando ou ainda vai passar (e até pra quem já passou e quer ver uma abordagem diferenciada) pela disciplina “Programação Avançada” no curso de Ciência da Computação. É provável que vocês vejam alguma aplicação utilizando sockets para comunicar-se via rede. Na UNIVALE, nossa turma viu esse conteúdo montando pequenas aplicações utilizando componentes Delphi.
Bom, o que eu trago pra vocês é uma implementação bem basicona de socket TCP em Java. O objetivo foi abstrair o funcionamento interno do socket em java e oferecer um JAR onde tivessem as classes cliente e servidor prontas para serem utilizadas. Mas daí já implementei uma interfacezinha e coloquei no projeto. Basta, como eu disse, importar o JAR que está em um dos links abaixo para seu projeto, instanciar a classe SocketServidor ou SocketCliente, de acordo com a necessidade, e implementar a classe interface que faz a interoperabilidade com a GUI que você criou. Mais ou menos da seguinte maneira:
public class ExemploGUIServidor extends javax.swing.JFrame {
private SocketCliente cliente = null;
private SocketServidor servidor = null;
private Interface frame;
public ExemploGUIServidor() {
initComponents();
frame = new Interface();
}
/* Esta é a classe que se precisa implementar
servidor.SocketInterface ou cliente.SocketInterface
dependo da necessidade. */
class Interface implements servidor.SocketInterface {
@Override
public void enviarMensagem(String msg) {
if (cliente != null)
cliente.enviarMensagem(msg);
else
servidor.enviarMensagem(msg);
}
@Override
public void msgRecebida(String msg) {
dialogo.setText(dialogo.getText() + msg + "\n");
}
@Override
public void fecharSocket() {
if (cliente != null)
servidor.fecharSocket();
else
cliente.fecharSocket();
}
}
...
... //Resto do código da GUI
O resultado está no link abaixo, aproveite! ‘-’
Qualquer dúvida na implementação ou se se interessar mais pelo assunto e quiser saber mais ou ainda sugerir algo, fique à vontade para se manifestar. Meu TCC está sendo desenvolvido nesta área, então pra mim será ótimo trocar informações sobre o assunto.