Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
6a437358-9381-4929-b3fe-30acf779c927 ChatBasico/src/com/ayrongabriel/chat/ChatCliente.java package com.ayrongabriel.chat; import java.awt.BorderLayout; import java.awt.Container; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.PrintWriter; import java.net.Socket; import java.util.Scanner; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; @SuppressWarnings("serial") public class ChatCliente extends JFrame { JTextField txtEnviar; PrintWriter escritor; Socket socket; JTextArea txtRecebido; Scanner leitor; String nome; public ChatCliente(){ } public String getNome() { return nome; } @SuppressWarnings("unused") public ChatCliente(String nome){ super("Chat : "+ nome); this.nome = nome; Font fonte = new Font("Serif", Font.PLAIN, 18); txtEnviar = new JTextField(); txtEnviar.setFont(fonte); txtRecebido = new JTextArea(); txtRecebido.setFont(fonte); JScrollPane scroll = new JScrollPane(txtRecebido); JButton botao = new JButton("Enviar"); botao.setFont(fonte); botao.addActionListener(new enviarListener()); Container painelEnvio = new JPanel(); painelEnvio.setLayout(new BorderLayout()); painelEnvio.add(BorderLayout.CENTER, txtEnviar); painelEnvio.add(BorderLayout.EAST, botao); getContentPane().add(BorderLayout.CENTER, txtRecebido); getContentPane().add(BorderLayout.SOUTH,painelEnvio); configRedes(); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(500,500); setVisible(true); } private class escutaServidor implements Runnable{ @Override public void run() { String texto; try { while((texto = leitor.nextLine()) != null){ txtRecebido.append(texto + "\n"); } } catch (Exception e) { JOptionPane.showMessageDialog(null, "Erro no ao escutar servidor","ERROR", JOptionPane.ERROR_MESSAGE); } } } public class enviarListener implements ActionListener{ @Override public void actionPerformed(ActionEvent e) { escritor.println(nome.toUpperCase() +" : "+ txtEnviar.getText()); escritor.flush(); txtEnviar.setText(""); txtEnviar.requestFocus(); } } public void configRedes(){ try{ socket = new Socket("127.0.0.1", 5000); escritor = new PrintWriter(socket.getOutputStream()); leitor = new Scanner(socket.getInputStream()); new Thread(new escutaServidor()).start(); }catch(Exception e){ JOptionPane.showMessageDialog(null, "Servidor desconectado.\n"+"Contate o "+"Administrador".toUpperCase(),"Chat: "+nome,JOptionPane.ERROR_MESSAGE); System.exit(EXIT_ON_CLOSE); } } public static void main(String[] args) { new ChatCliente("Gabriel"); new ChatCliente("Dayse"); } public Socket getSocket() { return socket; } } ChatBasico/bin/com/ayrongabriel/chat/ChatCliente$escutaServidor.class ChatBasico/bin/com/ayrongabriel/chat/ChatCliente$enviarListener.class ChatBasico/ChatCliente.java package com.ayrongabriel.redes; import java.awt.BorderLayout; import java.awt.Container; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.PrintWriter; import java.net.Socket; import java.util.Scanner; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; @SuppressWarnings("serial") public class ChatCliente extends JFrame { JTextField txtEnviar; PrintWriter escritor; Socket socket; JTextArea txtRecebido; Scanner leitor; String nome; public ChatCliente(){ } public String getNome() { return nome; } public ChatCliente(String nome){ super("Chat : "+ nome); this.nome = nome; Font fonte = new Font("Serif", Font.PLAIN, 18); txtEnviar = new JTextField(); txtEnviar.setFont(fonte); txtRecebido = new JTextArea(); txtRecebido.setFont(fonte); JScrollPane scroll = new JScrollPane(txtRecebido); JButton botao = new JButton("Enviar"); botao.setFont(fonte); botao.addActionListener(new enviarListener()); Container painelEnvio = new JPanel(); painelEnvio.setLayout(new BorderLayout()); painelEnvio.add(BorderLayout.CENTER, txtEnviar); painelEnvio.add(BorderLayout.EAST, botao); getContentPane().add(BorderLayout.CENTER, txtRecebido); getContentPane().add(BorderLayout.SOUTH,painelEnvio); configRedes(); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(500,500); setVisible(true); } private class escutaServidor implements Runnable{ @Override public void run() { String texto; try { while((texto = leitor.nextLine()) != null){ txtRecebido.append(texto + "\n"); } } catch (Exception e) { JOptionPane.showMessageDialog(null, "Erro no ao escutar servidor","ERROR", JOptionPane.ERROR_MESSAGE); } } } public class enviarListener implements ActionListener{ @Override public void actionPerformed(ActionEvent e) { escritor.println(nome.toUpperCase() +" : "+ txtEnviar.getText()); escritor.flush(); txtEnviar.setText(""); txtEnviar.requestFocus(); } } public void configRedes(){ try{ socket = new Socket("127.0.0.1", 5000); escritor = new PrintWriter(socket.getOutputStream()); leitor = new Scanner(socket.getInputStream()); new Thread(new escutaServidor()).start(); }catch(Exception e){ JOptionPane.showMessageDialog(null, "Servidor desconectado.\n"+"Contate o "+"Administrador".toUpperCase(),"Chat: "+nome,JOptionPane.ERROR_MESSAGE); System.exit(EXIT_ON_CLOSE); } } public static void main(String[] args) { new ChatCliente("Gabriel"); new ChatCliente("Dayse"); } public Socket getSocket() { return socket; } } ChatBasico/.project ChatBasico org.eclipse.jdt.core.javabuilder org.eclipse.jdt.core.javanature ChatBasico/.classpath ChatBasico/ChatServer.java package com.ayrongabriel.redes; import java.io.IOException; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList; import java.util.List; import java.util.Scanner; import javax.swing.JOptionPane; public class ChatServer { List<PrintWriter> escritores = new ArrayList<>(); public ChatServer() { ServerSocket servidor; try { servidor = new ServerSocket(5000); while(true){ Socket socket = servidor.accept(); new Thread(new escutaCliente(socket)).start(); PrintWriter p = new PrintWriter(socket.getOutputStream()); escritores.add(p); } } catch (IOException e) { JOptionPane.showMessageDialog(null, "Erro no socket. Servidor em execução.","SERVIDOR", JOptionPane.ERROR_MESSAGE); } } private void encaminharParaTodos(String texto){ for (PrintWriter pw : escritores) { try { pw.println(texto); pw.flush(); } catch (Exception e) { JOptionPane.showMessageDialog(null, "Erro no enviar das mensagem.","SERVIDOR", JOptionPane.ERROR_MESSAGE); } } } private class escutaCliente implements Runnable{ Scanner leitor; public escutaCliente(Socket socket) { try { leitor = new Scanner(socket.getInputStream()); } catch (Exception e) { JOptionPane.showMessageDialog(null, "Erro na escuta de dados.","SERVIDOR", JOptionPane.ERROR_MESSAGE); } } @Override public void run() { String texto; try { while((texto = leitor.nextLine()) != null){ System.out.println(texto); encaminharParaTodos(texto); } } catch (Exception e) { JOptionPane.showMessageDialog(null, "Erro na leitura de dados","SERVIDOR", JOptionPane.ERROR_MESSAGE); } } } public static void main(String[] args) { new ChatServer(); } } ChatBasico/bin/com/ayrongabriel/chat/ChatCliente.class ChatBasico/src/com/ayrongabriel/chat/ChatServer.java package com.ayrongabriel.chat; import java.io.IOException; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList; import java.util.List; import java.util.Scanner; import javax.swing.JOptionPane; public class ChatServer { List<PrintWriter> escritores = new ArrayList<>(); public ChatServer() { ServerSocket servidor; try { servidor = new ServerSocket(5000); while(true){ Socket socket = servidor.accept(); new Thread(new escutaCliente(socket)).start(); PrintWriter p = new PrintWriter(socket.getOutputStream()); escritores.add(p); } } catch (IOException e) { JOptionPane.showMessageDialog(null, "Erro no socket. Servidor em execução.","SERVIDOR", JOptionPane.ERROR_MESSAGE); } } private void encaminharParaTodos(String texto){ for (PrintWriter pw : escritores) { try { pw.println(texto); pw.flush(); } catch (Exception e) { JOptionPane.showMessageDialog(null, "Erro no enviar das mensagem.","SERVIDOR", JOptionPane.ERROR_MESSAGE); } } } private class escutaCliente implements Runnable{ Scanner leitor; public escutaCliente(Socket socket) { try { leitor = new Scanner(socket.getInputStream()); } catch (Exception e) { JOptionPane.showMessageDialog(null, "Erro na escuta de dados.","SERVIDOR", JOptionPane.ERROR_MESSAGE); } } @Override public void run() { String texto; try { while((texto = leitor.nextLine()) != null){ System.out.println(texto); encaminharParaTodos(texto); } } catch (Exception e) { JOptionPane.showMessageDialog(null, "Erro na leitura de dados","SERVIDOR", JOptionPane.ERROR_MESSAGE); } } } public static void main(String[] args) { new ChatServer(); } } ChatBasico/bin/com/ayrongabriel/chat/ChatServer.class ChatBasico/bin/com/ayrongabriel/chat/ChatServer$escutaCliente.class
Compartilhar