






Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
desenvolvimento de um chat em java
Tipologia: Exercícios
1 / 12
Esta página não é visível na pré-visualização
Não perca as partes importantes!







Neste projeto foi criado um programa que realiza comunicação interna entre dois computadores conectados em uma rede. O programa foi desenvolvido na linguagem Java ,sendo necessário a instalação da Máquina Virtual Java (JVM), para uso do chat.
Caso seja feito a escolha por Cliente é aberto uma nova janela questionando o IP do Servidor, que terá que ser previamente informado. Para o usuário que será o servidor logo após a segunda janela abrira a janela principal do chat, e para o cliente esta janela abrira após digitar o IP Se a conexão for estabelecida corretamente cada usuário recebera uma mensagem de confirmação Com a conexão estabelecida é possível começar a conversa.
package MVC; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; import javax.swing.JOptionPane; public class Controle { private final Visao view; private final Modelo model; static Socket Sockconn; ServerSocket ServSoc; public Controle(Visao view, Modelo model) throws IOException { this.view = view; this.model = model; view.enviaListener(new Envia()); escolha(); } void escolha() throws IOException { model.setNome(JOptionPane.showInputDialog(null, "digite seu nome"));//indica nome da pessoa Object[] opcoes = {"Servidor", "Cliente"};//cria objeto de opçoes para escolher entre servidor e cliente //janela com as opcoes int opcao = JOptionPane.showOptionDialog(null, "Olá " + model.getNome()
model.ipServ.getLocalHost(); view.getjTAHistorico().setText("Bem vindo "+model.getNome()); view.setTitle("servidor");//inidica titulo da janela de acordo com escolha model.servidor();//inicia conexao como servidor } else if (opcao == 1) { model.ipCli = JOptionPane.showInputDialog(null,"digite o Ip do Servidor\n por exemplo", "192.168.1.0"); view.getjTAHistorico().setText("Bem vindo "+model.getNome()); view.setTitle("Cliente"); model.cliente();//inicia conexao como cliente } } class Envia implements ActionListener {// ação do Botão @Override public void actionPerformed(ActionEvent e) { //verifica se existe texto no TextField if ((e.getSource() == view.getjBEnviar()) && (view.getjTFNovaMens().getText() != "")) { //envia o texto para o TextArea para ficar salco como Historico view.getjTAHistorico().setText(view.getjTAHistorico().getText()
package MVC; import java.awt.BorderLayout; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextArea; import javax.swing.JTextField; public class Visao extends JFrame { private JPanel JPGeral; private JPanel jPOutros; private JTextField jTFNovaMens; private JTextArea jTAHistorico; private JButton jBEnviar; public Visao() { setTitle("Char Super uau"); // seta titulo a janela iniciaComponentes();//metodo que inicia componentes setVisible(true);//deixa Jframe visivel setContentPane(JPGeral);//indica que este e o painel principal pack();// indica tamnho do jframe de acorod com componentes setResizable(false);//impede de mudar tamnho da janela setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//habilita fechamento pelo x } public void iniciaComponentes() {
setJPGeral(new JPanel()); setjPOutros(new JPanel()); getJPGeral().setLayout(new BorderLayout()); setjTFNovaMens(new JTextField(40)); setjTAHistorico(new JTextArea()); getjTAHistorico().setColumns(20); getjTAHistorico().setRows(20); setjBEnviar(new JButton("Send")); // insere os componentes no Jpanel getJPGeral().add(BorderLayout.CENTER, getjTAHistorico()); getJPGeral().add(BorderLayout.SOUTH, getjPOutros()); getjPOutros().add(getjTFNovaMens()); getjPOutros().add(getjBEnviar()); } void enviaListener(ActionListener al) { getjBEnviar().addActionListener(al); } public JPanel getJPGeral() { return JPGeral; } public void setJPGeral(JPanel JPGeral) { this.JPGeral = JPGeral; } public JPanel getjPOutros() { return jPOutros; } public void setjPOutros(JPanel jPOutros) { this.jPOutros = jPOutros; } public JTextField getjTFNovaMens() {
public class Modelo { private static Socket Sockconn; private ServerSocket ServSoc; private String nome = ""; private final Visao view; InetAddress ipServ; String ipCli; public Modelo(Visao view) { this.view = view; } public void servidor() throws UnknownHostException, IOException { //inicia conexão setServSoc(new ServerSocket(5555, 2, ipServ)); // recebe conexão do cliente setSockconn(getServSoc().accept()); //mensagem de aviso de conversa inciada JOptionPane.showMessageDialog(null, "Cliente conectado\n conversa inciada"); // chama metodo que recebe as mensagens recebe(); } public void cliente() throws UnknownHostException, IOException { //incia conexão com servidor setSockconn(new Socket(ipCli, 5555)); // mensagem de aviso de conversa inciada JOptionPane.showMessageDialog(null, "Conecta ao Servidor \n Conversa iniciada"); // chama metodo que recebe as mensagens recebe(); }
public void recebe() { while (true) { try { // variavel responsavel por receber os dasos DataInputStream dis = new DataInputStream(getSockconn().getInputStream()); //salva os dados numa variavel String String string = dis.readUTF(); //envia mensagem para JTextArea view.getjTAHistorico().setText(view.getjTAHistorico().getText() + '\n' + string); } catch (Exception e1) { e1.printStackTrace(); try { Thread.sleep(4000); System.exit(0); } catch (InterruptedException e) { e.printStackTrace(); } } } } public void enviar(String texto) { try { // variavel resposavel por enviar dados DataOutputStream dos = new DataOutputStream(getSockconn().getOutputStream()); dos.writeUTF(texto); } catch (Exception e1) { e1.printStackTrace(); try { Thread.sleep(4000);