Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


desenvolvimento de um chat em java mvc, Exercícios de Programação para Java

desenvolvimento de um chat em java

Tipologia: Exercícios

2014

Compartilhado em 12/06/2022

mariana-souza-s7z
mariana-souza-s7z 🇧🇷

1 documento

1 / 12

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Projeto
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.
1. Ao iniciar o chat, primeiro é apresentado uma janela solicitando o nome do usuário.
2. Após digitar o nome e questionado seu o usuário será o Servidor ou Cliente .
pf3
pf4
pf5
pf8
pf9
pfa

Pré-visualização parcial do texto

Baixe desenvolvimento de um chat em java mvc e outras Exercícios em PDF para Programação para Java, somente na Docsity!

Projeto

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.

  1. Ao iniciar o chat, primeiro é apresentado uma janela solicitando o nome do usuário.
  2. Após digitar o nome e questionado seu o usuário será o Servidor ou Cliente.

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.

Relatório com as linhas de código

Classe Controle

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()

  • "\nVoce deseja ser Servidor ou Cliente?", "Escolha", JOptionPane.DEFAULT_OPTION, JOptionPane.DEFAULT_OPTION, null, opcoes, opcoes[0]); if (opcao == 0) {//chama metodo para conexao como servidor ou cliente

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()

  • "\n Eu:" + view.getjTFNovaMens().getText()); model.enviar(model.getNome() + ": " + view.getjTFNovaMens().getText()); //limpa TextField view.getjTFNovaMens().setText(""); } } } public static void main(String[] args) throws IOException { Visao v = new Visao(); Modelo m = new Modelo(v); Controle p = new Controle(v, m); }

Classe Visão

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() {

Classe Modelo

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