Ir para conteúdo
Fórum CódigoFonte.net
zaidoh

Desafio: Implementação de Cliente-Servidor SorteioMegaSena.

Recommended Posts

Segue as duas classes(ServidorResultados, VerResultado) abaixo, basicamente há uma requisição feita pela classe VerResultado à classe ServidorResultados, Deixo-as aqui algumas informações e uma imagem para que vocês possam fazer as seguintes implementações:

  • Substitua as variáveis por uma coleção que o ajude a relacionar uma data de sorteio ao resultado do sorteio.I
  • Crie um método para preencher essa coleção com dados fictícios ou preencha manualmente antes de utilizá-la.II
  • Agora tanto o cliente como o servidor irão ler e enviar mensagens via socket. Você precisará de DataInputStream e DataOutputStream para ambos.III
  • No servidor, monte um String com as datas dos sorteios separados por vírgula. Assim, você pode enviá-la para o cliente.IV
  • V Para exibir as datas de sorteio e solicitar que o cliente escolha uma, você pode usar o diálogo criado pelo método estático showInputDialog da classe JOptionPane.
  • VI Você também pode criar uma janela personalizada para isso se tiver mais experiência com Swing.

 

import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
/**
*
* @author zaidoh
*/
public class ServidorResultados {

private String resutlado;
private String dataSorteio;

public void iniciarServico() {

resutlado = "06-55-13-47-22-19";
dataSorteio = "08/10";

try{
ServerSocket ss = new ServerSocket(2012);
while(true){

System.out.println("Aguardando conexão..");
Socket cliente = ss.accept();
DataOutputStream dos = new DataOutputStream(cliente.getOutputStream());

System.out.println("Enviando dados para " + cliente.getInetAddress());
dos.writeUTF(resutlado + "," + dataSorteio);
}
}catch(IOException ioe){
System.err.println(ioe.getMessage());
}

}

public static void main(String[] args) {
ServidorResultados sr = new ServidorResultados();
sr.iniciarServico();
}

}

***********************************************************
import java.io.DataInputStream;
import java.io.IOException;
import java.net.Socket;
/**
*
* @author zaidoh
*/
public class VerResultado extends javax.swing.JFrame {

public VerResultado() {
initComponents();
}

@SuppressWarnings("unchecked")
private void initComponents() {
lbTitulo = new javax.swing.JLabel();
jsTitulo = new javax.swing.JSeparator();
jlResultado = new javax.swing.JLabel();
jbVer = new javax.swing.JButton();
jlData = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
getContentPane().setLayout(null);
lbTitulo.setFont(new java.awt.Font("Tahoma", 0, 24)); // NOI18N
lbTitulo.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
lbTitulo.setText("Resultado da Mega Sena");
lbTitulo.setToolTipText("");
getContentPane().add(lbTitulo);
lbTitulo.setBounds(0, 10, 420, 50);
getContentPane().add(jsTitulo);
jsTitulo.setBounds(20, 60, 390, 10);
jlResultado.setFont(new java.awt.Font("Tahoma", 1, 36)); // NOI18N
jlResultado.setForeground(new java.awt.Color(0, 108, 208));
jlResultado.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
getContentPane().add(jlResultado);
jlResultado.setBounds(20, 70, 390, 60);
jbVer.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N
jbVer.setText("Ver agora!");
jbVer.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jbVerActionPerformed(evt);
}
});
getContentPane().add(jbVer);
jbVer.setBounds(60, 180, 300, 50);
jlData.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
jlData.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
getContentPane().add(jlData);
jlData.setBounds(30, 130, 370, 30);
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-439)/2, (screenSize.height-283)/2, 439, 283);
}
private void jbVerActionPerformed(java.awt.event.ActionEvent evt) {
requisitarResultado();
}

public static void main(String args[]) {

try {
for (javax.swing.UIManager.LookAndFeelInfo info :
javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (Exception ex) {
System.err.println(ex.getMessage());
}

java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new VerResultado().setVisible(true);
}
});
}

private javax.swing.JButton jbVer;
private javax.swing.JLabel jlData;
private javax.swing.JLabel jlResultado;
private javax.swing.JSeparator jsTitulo;
private javax.swing.JLabel lbTitulo;
private void requisitarResultado(){

try{
Socket servidor = new Socket("127.0.0.1",2012);
DataInputStream dis = new DataInputStream(servidor.getInputStream());

String resposta = dis.readUTF();
String [] dados = resposta.split(",");

exibirResultado(dados[0], dados[1]);

}catch(IOException ioe){
System.err.println(ioe.getMessage());
}

}

private void exibirResultado(String resultado, String data) {
jlResultado.setText(resultado);
jlData.setText("Sorteio: " + data);
}
}


Ver Imagem

megaSena

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

×