Sie sind auf Seite 1von 12

recebedor de mensagens cliente _________________________________________ package View; import java.io.InputStream; import java.util.Scanner; import javax.swing.

JTextArea; public class RecebedorMsgCliente extends Thread { private InputStream entrada; JTextArea texto; Tela tela; public RecebedorMsgCliente(InputStream entrada, Tela obj) { this.entrada = entrada; tela = obj; } public synchronized void start() { super.start(); } public void run() { // recebe msgs do servidor e imprime na tela texto = tela.getCampoStreen(); Scanner s = new Scanner(entrada); String linha = ""; while (s.hasNextLine()) { linha = s.nextLine(); texto.append(linha+ "\n"); texto.selectAll(); tela.setCampoStreen(texto); } } } ___________________________________________ cliente ___________________________________________ /* * To change this template, choose Tools Templates * and open the template in the editor. */ /* * Tela.java * * Created on 01/09/2011, 16:53:43 */ package View; import import import import import java.awt.event.KeyEvent; java.io.IOException; java.io.PrintStream; java.net.Socket; java.net.UnknownHostException;

import javax.swing.JOptionPane; /** * * @author Ricardo */ public class Tela extends javax.swing.JFrame { private String host = "192.168.3.49"; private int porta = 4444; private Socket socket; private RecebedorMsgCliente recebedor; /** Creates new form Tela */ public Tela() { initComponents(); CampoStreen.setEditable(false); BtLogar2.setVisible(false); MostrarLogin(); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:i nitComponents private void initComponents() { Fundo = new javax.swing.JPanel(); jPanel1 = new javax.swing.JPanel(); jScrollPane1 = new javax.swing.JScrollPane(); CampoStreen = new javax.swing.JTextArea(); jScrollPane2 = new javax.swing.JScrollPane(); CampoMsg = new javax.swing.JTextArea(); PainelLogin = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); CampoNome = new javax.swing.JTextField(); CampoSetor = new javax.swing.JTextField(); BtLogar = new javax.swing.JButton(); BtLogar2 = new javax.swing.JButton(); jPanel2 = new javax.swing.JPanel(); jScrollPane3 = new javax.swing.JScrollPane(); ListaClientes = new javax.swing.JList(); BtFechar = new javax.swing.JButton(); PainelStatus = new javax.swing.JPanel(); LabelNome = new javax.swing.JLabel(); LabelSetor = new javax.swing.JLabel(); jButton1 = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE ); Fundo.setBackground(new java.awt.Color(0, 51, 51)); Fundo.setBorder(javax.swing.BorderFactory.createEtchedBorder());

CampoStreen.setColumns(20); CampoStreen.setRows(5); CampoStreen.addFocusListener(new java.awt.event.FocusAdapter() { public void focusGained(java.awt.event.FocusEvent evt) { CampoStreenFocusGained(evt); } }); jScrollPane1.setViewportView(CampoStreen); CampoMsg.setColumns(20); CampoMsg.setRows(5); CampoMsg.addKeyListener(new java.awt.event.KeyAdapter() { public void keyPressed(java.awt.event.KeyEvent evt) { CampoMsgKeyPressed(evt); } }); jScrollPane2.setViewportView(CampoMsg); PainelLogin.setBorder(javax.swing.BorderFactory.createTitledBorder(javax .swing.BorderFactory.createEtchedBorder(), "Login", javax.swing.border.TitledBor der.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 0, 11), new java.awt.Color(0, 0, 0))); // NOI18N jLabel1.setText("Nome:"); jLabel2.setText("Setor:"); BtLogar.setText("OK"); BtLogar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { BtLogarActionPerformed(evt); } }); BtLogar2.setText("OK"); BtLogar2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { BtLogar2ActionPerformed(evt); } }); javax.swing.GroupLayout PainelLoginLayout = new javax.swing.GroupLayout( PainelLogin); PainelLogin.setLayout(PainelLoginLayout); PainelLoginLayout.setHorizontalGroup( PainelLoginLayout.createParallelGroup(javax.swing.GroupLayout.Alignm ent.LEADING) .addGroup(PainelLoginLayout.createSequentialGroup() .addGap(105, 105, 105) .addGroup(PainelLoginLayout.createParallelGroup(javax.swing.Grou pLayout.Alignment.TRAILING) .addComponent(jLabel2) .addComponent(jLabel1)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELA TED) .addGroup(PainelLoginLayout.createParallelGroup(javax.swing.Grou pLayout.Alignment.LEADING, false) .addComponent(CampoNome, javax.swing.GroupLayout.PREFERRED_S IZE, 304, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, Painel

LoginLayout.createSequentialGroup() .addComponent(CampoSetor) .addGap(18, 18, 18) .addComponent(BtLogar))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELA TED) .addComponent(BtLogar2) .addContainerGap(70, Short.MAX_VALUE)) ); PainelLoginLayout.setVerticalGroup( PainelLoginLayout.createParallelGroup(javax.swing.GroupLayout.Alignm ent.LEADING) .addGroup(PainelLoginLayout.createSequentialGroup() .addContainerGap() .addGroup(PainelLoginLayout.createParallelGroup(javax.swing.Grou pLayout.Alignment.BASELINE) .addComponent(jLabel1) .addComponent(CampoNome, javax.swing.GroupLayout.PREFERRED_S IZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZ E)) .addGap(27, 27, 27) .addGroup(PainelLoginLayout.createParallelGroup(javax.swing.Grou pLayout.Alignment.BASELINE) .addComponent(jLabel2) .addComponent(CampoSetor, javax.swing.GroupLayout.PREFERRED_ SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SI ZE) .addComponent(BtLogar) .addComponent(BtLogar2)) .addContainerGap(34, Short.MAX_VALUE)) ); jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swi ng.BorderFactory.createEtchedBorder(), "Usuarios online", javax.swing.border.Tit ledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITIO N, new java.awt.Font("Tahoma", 0, 11), new java.awt.Color(0, 0, 0))); // NOI18N ListaClientes.setModel(new javax.swing.AbstractListModel() { String[] strings = { "item" }; public int getSize() { return strings.length; } public Object getElementAt(int i) { return strings[i]; } }); jScrollPane3.setViewportView(ListaClientes); javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPan el2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setHorizontalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment. LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addContainerGap() .addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE , 169, Short.MAX_VALUE) .addContainerGap()) ); jPanel2Layout.setVerticalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment. LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.

createSequentialGroup() .addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE , 435, Short.MAX_VALUE) .addContainerGap()) ); BtFechar.setText("Sair"); BtFechar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { BtFecharActionPerformed(evt); } }); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPan el1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment. LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLay out.Alignment.TRAILING) .addComponent(jScrollPane2, javax.swing.GroupLayout.Alignmen t.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 579, Short.MAX_VALUE) .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignmen t.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 579, Short.MAX_VALUE) .addComponent(PainelLogin, javax.swing.GroupLayout.Alignment .LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_ SIZE, Short.MAX_VALUE)) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLay out.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addGap(18, 18, 18) .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED _SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_S IZE)) .addGroup(jPanel1Layout.createSequentialGroup() .addGap(88, 88, 88) .addComponent(BtFechar))) .addContainerGap()) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment. LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout. createSequentialGroup() .addContainerGap() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLay out.Alignment.TRAILING) .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1 Layout.createSequentialGroup() .addComponent(BtFechar) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacem ent.RELATED) .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_S IZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGroup(jPanel1Layout.createSequentialGroup() .addComponent(PainelLogin, javax.swing.GroupLayout.PREFE RRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERR

ED_SIZE) .addGap(11, 11, 11) .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFA ULT_SIZE, 258, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacem ent.RELATED) .addComponent(jScrollPane2, javax.swing.GroupLayout.PREF ERRED_SIZE, 85, javax.swing.GroupLayout.PREFERRED_SIZE))) .addContainerGap()) ); LabelNome.setFont(new java.awt.Font("Times New Roman", 1, 24)); // NOI18 N LabelNome.setText("Nome Pessoa"); LabelSetor.setFont(new java.awt.Font("Times New Roman", 0, 24)); // NOI1 8N LabelSetor.setText("Setor Pessoa"); jButton1.setText("Editar Perfil"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); javax.swing.GroupLayout PainelStatusLayout = new javax.swing.GroupLayout (PainelStatus); PainelStatus.setLayout(PainelStatusLayout); PainelStatusLayout.setHorizontalGroup( PainelStatusLayout.createParallelGroup(javax.swing.GroupLayout.Align ment.LEADING) .addGroup(PainelStatusLayout.createSequentialGroup() .addGroup(PainelStatusLayout.createParallelGroup(javax.swing.Gro upLayout.Alignment.LEADING) .addGroup(PainelStatusLayout.createSequentialGroup() .addContainerGap() .addComponent(LabelNome)) .addGroup(PainelStatusLayout.createSequentialGroup() .addGap(60, 60, 60) .addComponent(LabelSetor))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELA TED, 312, Short.MAX_VALUE) .addComponent(jButton1) .addGap(237, 237, 237)) ); PainelStatusLayout.setVerticalGroup( PainelStatusLayout.createParallelGroup(javax.swing.GroupLayout.Align ment.LEADING) .addGroup(PainelStatusLayout.createSequentialGroup() .addContainerGap() .addGroup(PainelStatusLayout.createParallelGroup(javax.swing.Gro upLayout.Alignment.TRAILING) .addComponent(jButton1) .addGroup(PainelStatusLayout.createSequentialGroup() .addComponent(LabelNome) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacem ent.RELATED) .addComponent(LabelSetor))) .addContainerGap(14, Short.MAX_VALUE))

); javax.swing.GroupLayout FundoLayout = new javax.swing.GroupLayout(Fundo) ; Fundo.setLayout(FundoLayout); FundoLayout.setHorizontalGroup( FundoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE ADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, FundoLayout.cr eateSequentialGroup() .addContainerGap() .addGroup(FundoLayout.createParallelGroup(javax.swing.GroupLayou t.Alignment.TRAILING) .addComponent(PainelStatus, javax.swing.GroupLayout.Alignmen t.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT _SIZE, Short.MAX_VALUE) .addComponent(jPanel1, javax.swing.GroupLayout.Alignment.LEA DING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE , Short.MAX_VALUE)) .addContainerGap()) ); FundoLayout.setVerticalGroup( FundoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE ADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, FundoLayout.cr eateSequentialGroup() .addContainerGap() .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, jav ax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGap(18, 18, 18) .addComponent(PainelStatus, javax.swing.GroupLayout.PREFERRED_SI ZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE ) .addContainerGap()) ); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentP ane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING ) .addComponent(Fundo, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swi ng.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING ) .addComponent(Fundo, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swi ng.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ); pack(); }// </editor-fold>//GEN-END:initComponents private void BtLogarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-F IRST:event_BtLogarActionPerformed if(CampoNome.getText().equals("") ((CampoSetor.getText().equals ("")))){ JOptionPane.showMessageDialog(null, "Preencha todos os campo

s"); }else{ init(); } }//GEN-LAST:event_BtLogarActionPerformed private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GENFIRST:event_jButton1ActionPerformed // TODO add your handling code here: MostrarLogin(); }//GEN-LAST:event_jButton1ActionPerformed private void CampoMsgKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:ev ent_CampoMsgKeyPressed if (evt.getKeyCode() == KeyEvent.VK_ENTER) { enviaMensagens(CampoNome.getText()+ " - "+ CampoSetor.getText()+ " Disse: \n"+ getCampoMsg().getText()+ "\n"); getCampoMsg().setText(""); } }//GEN-LAST:event_CampoMsgKeyPressed private void CampoStreenFocusGained(java.awt.event.FocusEvent evt) {//GEN-FI RST:event_CampoStreenFocusGained }//GEN-LAST:event_CampoStreenFocusGained private void BtLogar2ActionPerformed(java.awt.event.ActionEvent evt) {//GENFIRST:event_BtLogar2ActionPerformed if(CampoNome.getText().equals("") ((CampoSetor.getText().equals("")))){ JOptionPane.showMessageDialog(null, "Preencha todos os campos"); }else{ enviaMensagens(CampoNome.getText()+ " - "+ CampoSetor.getText()+ " acabou de entrar!!!\n"); } }//GEN-LAST:event_BtLogar2ActionPerformed private void BtFecharActionPerformed(java.awt.event.ActionEvent evt) {//GENFIRST:event_BtFecharActionPerformed System.exit(0); }//GEN-LAST:event_BtFecharActionPerformed /** * @param args the command line arguments */ public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new Tela().setVisible(true); } }); } public void MostrarLogin(){ PainelLogin.setVisible(true); PainelStatus.setVisible(false); getCampoStreen().setEnabled(false); getCampoMsg().setEnabled(false);

} public void MostrarMsg(){ PainelLogin.setVisible(false); PainelStatus.setVisible(true); LabelNome.setText(CampoNome.getText()); LabelSetor.setText(CampoSetor.getText()); getCampoStreen().setEnabled(true); getCampoMsg().setEnabled(true); BtLogar.setVisible(false); BtLogar2.setVisible(true); } public void init() { try { socket = new Socket(host, porta); recebedor = new RecebedorMsgCliente(socket.getInputStream(), thi s); recebedor.start(); MostrarMsg(); enviaMensagens(CampoNome.getText()+ " - "+ CampoSetor.getText()+ " - acabou de entrar!!!\n"); //enviaMensagens("=(cod0341576#*#);"); } catch (UnknownHostException e) { JOptionPane.showMessageDialog(null, "Host desconhecido!"); } catch (IOException e) { JOptionPane.showMessageDialog(null, "Servidor no encontrado"); } } public void enviaMensagens(String msg) { try { PrintStream stream = new PrintStream(socket.getOutputStream()); stream.println(msg); MostrarMsg(); } catch (IOException e) { JOptionPane.showMessageDialog(null, "Servidor no encontrado"); } } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton BtFechar; private javax.swing.JButton BtLogar; private javax.swing.JButton BtLogar2; private javax.swing.JTextArea CampoMsg; private javax.swing.JTextField CampoNome; private javax.swing.JTextField CampoSetor; private javax.swing.JTextArea CampoStreen; private javax.swing.JPanel Fundo; private javax.swing.JLabel LabelNome; private javax.swing.JLabel LabelSetor; private javax.swing.JList ListaClientes; private javax.swing.JPanel PainelLogin; private javax.swing.JPanel PainelStatus; private javax.swing.JButton jButton1; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JPanel jPanel1;

private javax.swing.JPanel jPanel2; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPane2; private javax.swing.JScrollPane jScrollPane3; // End of variables declaration//GEN-END:variables /** * @return the CampoStreen */ public javax.swing.JTextArea getCampoStreen() { return CampoStreen; } /** * @param CampoStreen the CampoStreen to set */ public void setCampoStreen(javax.swing.JTextArea CampoStreen) { this.CampoStreen = CampoStreen; } /** * @return the CampoMsg */ public javax.swing.JTextArea getCampoMsg() { return CampoMsg; } /** * @param CampoMsg the CampoMsg to set */ public void setCampoMsg(javax.swing.JTextArea CampoMsg) { this.CampoMsg = CampoMsg; } /** * @return the ListaClientes */ public javax.swing.JList getListaClientes() { return ListaClientes; } /** * @param ListaClientes the ListaClientes to set */ public void setListaClientes(javax.swing.JList ListaClientes) { this.ListaClientes = ListaClientes; } } _____________________________________________________________________ recebedor de mensagens servidor _________________________________________________________________ package Servidor; import java.io.InputStream; import java.util.Scanner; public class RecebedorMsgServidor extends Thread { private InputStream entrada; private Servidor servidor;

public RecebedorMsgServidor(InputStream entrada, Servidor servidor) { this.entrada = entrada; this.servidor = servidor; } public synchronized void start() { super.start(); } public void run() { Scanner s = new Scanner(entrada); while (s.hasNextLine()) { servidor.distribuiMensagem(s.nextLine()); } s.close(); } } _______________________________________________________________________ servidor _______________________________________________________________________ package Servidor; import import import import import import java.io.IOException; java.io.ObjectOutputStream; java.io.PrintStream; java.net.ServerSocket; java.net.Socket; java.util.ArrayList;

public class Servidor { public static final int PORTA = 4444; private ArrayList clientes; private ArrayList nomesClientes; public Servidor() { clientes = new ArrayList<Socket>(); nomesClientes = new ArrayList(); } public void init() { try { ServerSocket socketRecepcao = new ServerSocket(PORTA); System.out.println("Servidor esperando conexo..."); while (true) { Socket cliente = socketRecepcao.accept(); System.out.println("Nova conexo com o cliente " + formataClien te(cliente)); // Adiciona o novo cliente lista de clientes clientes.add(cliente); // Cria uma nova thread para receber mensagens deste cliente RecebedorMsgServidor recebedor = new RecebedorMsgServidor(cl iente.getInputStream(), this); recebedor.start(); } } catch (IOException e) { System.out.println("Erro de entrada/sada!"); }

} public void distribuiMensagem(String msg) { // : clientes Socket cliente = new Socket(); for (int i = 0; i < clientes.size(); i++) { try{ cliente = (Socket) clientes.get(i); //JOptionPane.showMessageDialog(null, "Entrei!!!"); PrintStream stream = new PrintStream(cliente.getOutputStream ()); stream.println(msg); }catch(Exception e){ //JOptionPane.showMessageDialog(null, "Entrei aqui!!!"); } } } private String formataCliente(Socket cliente) { return cliente.getInetAddress().getHostAddress() + ": " + cliente.ge tPort(); } public static void main(String[] args) { Servidor servidor = new Servidor(); servidor.init(); } }

Das könnte Ihnen auch gefallen