Cincia da Computao
RA: B3863A1
RA: A66CJC-6
RA: B20675-6
ndice
Objetivo do trabalho ---------------------------------------------------------
Introduo ----------------------------------------------------------------------
Fundamento da comunicao de dados em rede-----------------
Plano de Desenvolvimento da Aplicao ----------------------------
Projeto estrutural do Sistema -------------------------------------------Relatrio com as linhas de cdigo do Programa --------------Apresentao do Programa em Funcionamento--------------------Bibliografia --------------------------------------------------------------------FICHA DE ATIVIDADES PRTICAS SUPERVISIONADAS ------
Objetivo do trabalho
Temos como objetivo desse trabalho aprimorar nosso
desenvolvimento inicial do curso como um profissional e
futuramente um cientista da computao, j comeando a
aprender trabalhar em equipe, compartilhando idias e
tambm aprendendo cada vez mais com o prximo. O foco
desse trabalho que foi o desenvolvimento de uma ferramenta
simples de comunicao em rede.
Introduo
Representao do programa
assim que clicado no boto
CLIENTE.
Representao do programa
assim que clicado no boto
CLIENTE SERVIDO
.
ChatServidor
package 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 ChatServidor {
List<PrintWriter> escritores = new ArrayList<PrintWriter>();
public ChatServidor(){
ServerSocket server;
try {
server = new ServerSocket(5000);
new TelaInicial2();
JOptionPane.showMessageDialog
(null,"Servidor Online.");
while(true){
//monitorar constantemente a situao
Socket socket = server.accept();
new Thread(new OuveCliente(socket)).start();
PrintWriter p = new PrintWriter(socket.getOutputStream());
escritores.add(p);
}
} catch (IOException e) {}
}
private void encaminharParaTodos(String texto){
for (PrintWriter w : escritores){
try{
w.println(texto);
w.flush();
}catch(Exception e){}
}
}
private class OuveCliente implements Runnable{
Scanner leitor;
public OuveCliente(Socket socket){
try{
leitor = new Scanner(socket.getInputStream()); // faz a leitura
das informaes
}catch(Exception e){}
}
public void run() {
String texto;
try{
while((texto = leitor.nextLine()) != null){
System.out.println(texto);
encaminharParaTodos(texto);
}
}catch(Exception e){}
}
}
public static void main(String[] args) {
new ChatServidor();
}
}
ServidorTop
package 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.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class ServidorTop extends JFrame{
private static final long serialVersionUID = 1L;
JTextField textoParaEnviar;
PrintWriter escritor;
Socket socket;
String nome;
JTextArea textoRecebido;
Scanner leitor;
JButton botaoEnviar;
private class OuveServidor implements Runnable{
public void run() {
try{
String texto;
while((texto = leitor.nextLine()) != null){
textoRecebido.append(texto + "\n");// add no final do
texto este novo trecho
}
}catch(Exception x){}
}
}
public ServidorTop(String nome){
super("Usurio Servidor");
this.nome = nome;
textoParaEnviar = new JTextField();
botaoEnviar = new JButton("Enviar");
botaoEnviar.addActionListener(new EnviarListener());
Container janelaDeEnvio = new JPanel();
janelaDeEnvio.setLayout(new BorderLayout());
janelaDeEnvio.add(BorderLayout.CENTER, textoParaEnviar);
janelaDeEnvio.add(BorderLayout.EAST, botaoEnviar);
Font fonte = new Font("Arial", Font.BOLD, 14);
textoRecebido = new JTextArea();
JScrollPane scroll = new JScrollPane(textoRecebido);
textoRecebido.setFont(fonte);
textoRecebido.setEditable(false);
getContentPane().add(BorderLayout.CENTER, scroll);
getContentPane().add(BorderLayout.SOUTH, janelaDeEnvio);
configurarRede();
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setSize(300, 500);
setLocation(310, 100);
setVisible(true);
}
private class EnviarListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
if(e.getSource() == botaoEnviar)
{
escritor.println(nome + " : " + textoParaEnviar.getText());
escritor.flush();// garantir que a informao seja encaminhada
textoParaEnviar.setText("");
textoParaEnviar.requestFocus(); // adiciona o cursor no
campo de texto
}
}
}
private void configurarRede(){
try{
socket = new Socket("127.0.0.1", 5000);
escritor = new PrintWriter(socket.getOutputStream());
leitor = new Scanner(socket.getInputStream());
new Thread(new OuveServidor()).start();
}catch(Exception e){}
}
}
Tela Inicial
package redes;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class TelaInicial2 extends JFrame implements ActionListener {
ImageIcon
fundo
ImageIcon(getClass().getResource("/Imagens/inicial.jpg"));
JPanel panel1;
JButton cliente, servidor;
Container janela2;
TelaLogin login;
public TelaInicial2(){
super("Eco ChatMessenger");
cliente = new JButton("Cliente");
servidor = new JButton("Usurio Servidor");
panel1 = new JPanel();
Font fonte = new Font("Verdana", Font.ITALIC, 14);
cliente.setFont(fonte);
servidor.setFont(fonte);
cliente.addActionListener(this);
servidor.addActionListener(this);
janela2 = getContentPane();
janela2.setLayout(new BorderLayout());
panel1.setLayout(null);
panel1.add(cliente);
panel1.add(servidor);
new
TelaLogin
package redes;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
public class TelaLogin extends JFrame implements ActionListener{
private static final long serialVersionUID = 1L;
private JLabel jlNome, jlSenha, jlInfo;
private JButton btOk, btCancelar;
private JTextField tfNome;
private JPasswordField passwdField;
private JPanel jpCenter, jpCenterFull, jpHead, jpLogin, jpButtons, jpFull;
Container janela;
int i=0;
public TelaLogin(){
super("Tela de Login");
jlNome = new JLabel("Usurio");
jlSenha = new JLabel("Senha");
jlInfo = new JLabel("Informe o Nome de Usurio e Senha");
tfNome = new JTextField(10);
btOk = new JButton("Entrar");
btCancelar = new JButton("Cancelar");
passwdField = new JPasswordField("");
jpCenter = new JPanel();
jpCenterFull = new JPanel();
jpHead = new JPanel();
jpLogin = new JPanel();
jpButtons = new JPanel();
jpFull = new JPanel();
btOk.addActionListener((ActionListener) this);
btCancelar.addActionListener((ActionListener) this);
janela = getContentPane();
janela.setLayout(new BorderLayout());
jpLogin.setLayout(new GridLayout(2,1));
jpButtons.setLayout(new GridLayout(1,2));
jpHead.setLayout(new FlowLayout());
jpCenter.setLayout(new BorderLayout());
jpCenterFull.setLayout(new BorderLayout());
jpFull.setLayout(new FlowLayout());
jpFull.setSize(100,100);
jpHead.add(jlInfo);
jpLogin.add(jlNome);
jpLogin.add(tfNome);
jpLogin.add(jlSenha);
jpLogin.add(passwdField);
jpButtons.add(btOk);
jpButtons.add(btCancelar);
jpCenter.add(jpLogin, BorderLayout.CENTER);
jpCenter.add(jpButtons, BorderLayout.SOUTH);
jpCenterFull.add(jpHead, BorderLayout.NORTH);
jpCenterFull.add(jpCenter, BorderLayout.CENTER);
jpFull.add(jpCenterFull);
janela.add(jpFull, BorderLayout.CENTER);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setSize(270, 150);
setLocationRelativeTo(null);
setVisible(true);
}
public void actionPerformed(ActionEvent e){
String login = "eco";
String senha = "eco";
if(e.getSource() == btOk){
String login1 = tfNome.getText();
String senha1 = passwdField.getText();
if(senha1.equals(senha) && login1.equals(login)){
JOptionPane.showMessageDialog
(null,"Usurio ou senha incorretos.");
setVisible(false);
Referencia Bibliogrfica
http://www.caelum.com.br/apostila-java-orientacao-objetos/eclipse-ide/
http://www.caelum.com.br/apostila-java-orientacao-objetos/apendice-sockets/
http://javafree.uol.com.br/artigo/2879/Programando-com-sockets-em-java-parte01.html
http://docs.oracle.com/javase/7/docs/api/java/net/Socket.html
http://www.guj.com.br/articles/38
http://www.guj.com.br/java/61756-melhor-maneira-de-desenvolver-aplicacoesswing-no-eclipse
http://javafree.uol.com.br/topic-886551-Alinhar-botoes-e-setar-a-Size.html
http://pt.wikipedia.org/wiki/Comunica%C3%A7%C3%A3o_em_rede
http://pt.wikibooks.org/wiki/Introdu%C3%A7%C3%A3o_%C3%A0_comunica
%C3%A7%C3%A3o_entre_computadores_e_tecnologias_de_rede/Tecnologias_de
_rede
Java - Como Programar - 8 Ed. 2010 - DEITEL
Use a cabea: Java - ED. Alfa Books
TURNO:Noturno
Aluno
Professor