Alguém pode dar uma luz para a Implementação de Cliente-Servidor SorteioMegaSena?

REST

Segurança

Java

Testes

02/01/2017

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);
}
}


Dicas de Implementação:

I Substitua as variáveis por uma coleção que o ajude a relacionar uma data de sorteio ao resultado do sorteio.
II Crie um método para preencher essa coleção com dados fictícios ou preencha manualmente antes de utilizá-la.
III Agora tanto o cliente como o servidor irão ler e enviar mensagens via socket. Você precisará de DataInputStream e DataOutputStream para ambos.
IV No servidor, monte um String com as datas dos sorteios separados por vírgula. Assim, você pode enviá-la para o cliente.
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.
Daniel Almeida

Daniel Almeida

Curtidas 0
POSTAR