Pq a message do cliente, ele pega a menssagem e a do servidor pega a “”… os programas estão funcionando… só a descripitografia do servidor q não está funcionando… Será qpóde me ajudar… não posso colocar essa duvida no forum pois é um trabalho da facudlade
o codigo segue abaixo:
a duvida é na linha 122 to explicando lá…
Código:
//Configuraum Server que receberá uma conexão
//de um cliente, enviará um string para o cliente,
//e fechará a conexão;
import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Servidor extends JFrame{
private JTextField enter;
private JTextArea display;
ObjectOutputStream output;
ObjectInputStream input;
String message="";
public Servidor(){
super("Servidor");
Container c= getContentPane();
try {
JOptionPane.showMessageDialog(null,"O Host Name/IP do servidor é:\n"+InetAddress.getLocalHost(),
"IP do Servidor",JOptionPane.INFORMATION_MESSAGE);
}
catch (UnknownHostException e) {
e.printStackTrace();
}
enter= new JTextField();
enter.setEnabled(false);
enter.setToolTipText("Digite o texto e <Enter>");
enter.addActionListener( // evento do <enter>
new ActionListener(){
public void actionPerformed(ActionEvent e){
sendData(e.getActionCommand());
enter.setText("");
}
}
);
c.add(enter, BorderLayout.SOUTH);
display=new JTextArea();
display.setToolTipText("Mostra Status e Chat");
c.add(new JScrollPane(display), BorderLayout.CENTER);
JButton botao1=new JButton("Enviar");
c.add(botao1, BorderLayout.EAST);
botao1.setToolTipText("Enviar a Menssagem");
botao1.setMnemonic('E');
botao1.addActionListener( //evendo do botao1
new ActionListener() {
public void actionPerformed( ActionEvent e ){
sendData(enter.getText());
enter.setText("");
}
}
);
JButton botao2=new JButton("Descrip.");
c.add(botao2, BorderLayout.WEST);
botao2.setToolTipText("Descriptografa a Última Menssagem");
botao2.setMnemonic('D');
botao2.addActionListener(
new ActionListener() {
public void actionPerformed( ActionEvent e ){
display.append("\nCLIENTE>>>"+/*fazDescrip(*/message)/*)*/; //Chama fç "fazDescrip(String)" com o clique do botao2
}
}
);
//setSize(400,250);
setBounds(310, 250, 400,250);
setVisible(true);
show();
}
public void runServidor(){
ServerSocket servidor;
Socket conexao;
int contador=1;
try{
//passo 1: Cria um ServerSocket.
String portalida=JOptionPane.showInputDialog("Digite o Número da Porta (Acima de 256):"); //
int porta=Integer.parseInt(portalida); //
String tamfilalida=JOptionPane.showInputDialog("Digite o Tamanho da Fila:"); //
int tamfila=Integer.parseInt(tamfilalida); //
servidor=new ServerSocket(porta,tamfila); //
//server= new ServerSocket(5000, 100);
while(true){
//passo 2: Espera conexão
display .setText("Aguardando conexão\n");//Waiting for connection
conexao=servidor.accept();
display.append("Conexão"+contador+"recebido de:"+conexao.getInetAddress().getHostName());
//Connection received from:
//Passo 3: Obtém os fluxos de entrada e saída
output=new ObjectOutputStream(conexao.getOutputStream());
output.flush();
input=new ObjectInputStream(conexao.getInputStream());
display.append("\nAdquirido fluxos de I/O\n");//Got I/O streams
//Passo 4: Processa conexão
String message="Conexão bem sucedida";//Connection successful
output.writeObject(message);
output.flush();
enter.setEnabled(true);
do{
try{
message=(String) input.readObject();
/*122*/ display.append("\nCLIENTE>>>"+message);//************ Quero q o evento do botao2 chame o metodo fazDescrip e tenha como parametro a "message" desta linha... ele tapegando a global
display.append("\nCLIENTE>>>"+message);
display.setCaretPosition(display.getText().length());
//String message1=message;
}
catch (ClassNotFoundException cnfex){
display.append("\nTipo de caracter desconhecido");//Unknown object type received
}
}while(!message.equals("CLIENTE>>>ARCVDN") || !message.equals("CLIENTE>>>FINALE"));//Fecha conexão ARCVDN == FINALE
//Passo 5: Fecha a conexão
display.append("\nUsuário encerrou conexão");//User terminated connection
enter.setEnabled(false);
output.close();
input.close();
conexao.close();
++ contador; //Incrementa o numero de conexões
}
}
catch (EOFException eof){
System.out.println("Cliente encerrou conexão");//Client terminated connection
}
catch (IOException io){
io.printStackTrace();
}
}
private void sendData(String s){
try{
output.writeObject(fazCrip(s)); // APARECE NO CLIENTE chamando a função "fazCrip(String)" incrementando em meaux
output.flush();
display.append("\nSERVIDOR>>> "+s); //APARECE NO SERVIDOR SERVIDOR ENVIA E APARECE NO SERVIDOR
}
catch(IOException cnfex){
display.append("\nErro na Escrita");//Error writing object
}
}
private String fazCrip(String meaux){
String text="";
int tamtexto=meaux.length(); // conta string
for (int i=0;i<tamtexto;i++){
char letra=meaux.charAt(i);
switch (letra){
case 'a':text+="v";break;case 'A':text+="V";break;
case 'e':text+="n";break;case 'E':text+="N";break;
case 'i':text+="r";break;case 'I':text+="R";break;
case 'o':text+="s";break;case 'O':text+="S";break;
case 'u':text+="m";break;case 'U':text+="M";break;
case 'l':text+="d";break;case 'L':text+="D";break;
case 'b':text+="p";break;case 'B':text+="P";break;
case 'c':text+="h";break;case 'C':text+="H";break;
case 'w':text+="f";break;case 'W':text+="F";break;
case 'm':text+="u";break;case 'M':text+="U";break;
case 'd':text+="o";break;case 'D':text+="O";break;
case 'p':text+="i";break;case 'P':text+="I";break;
case 'h':text+="e";break;case 'H':text+="E";break;
case 'f':text+="a";break;case 'F':text+="A";break;
case 'v':text+="w";break;case 'V':text+="W";break;
case 'n':text+="c";break;case 'N':text+="C";break;
case 'r':text+="b";break;case 'R':text+="B";break;
case 's':text+="l";break;case 'S':text+="L";break;
case '/':text+="!";break;
case '$':text+="?";break;
case '*':text+="@";break;
case '#':text+=".";break;
case '.':text+="/";break;
case '@':text+="$";break;
case '?':text+="*";break;
case '!':text+="#";break;
case '0':text+="7";break;
case '3':text+="9";break;
case '5':text+="8";break;
case '8':text+="4";break;
case '9':text+="6";break;
case '7':text+="0";break;
case '1':text+="3";break;
case '2':text+="5";break;
case '4':text+="2";break;
case '6':text+="1";break;
default:text+=letra;break;
}
}
return (text);
}
private String fazDescrip(String meaux){ //Funçao para Descripitografar
String text="";
int tamtexto=meaux.length(); // conta string
for (int i=0;i<tamtexto;i++){
char letra=meaux.charAt(i);
switch (letra){
case 'v':text+="a";break;case 'V':text+="A";break;
case 'n':text+="e";break;case 'N':text+="E";break;
case 'r':text+="i";break;case 'R':text+="I";break;
case 's':text+="o";break;case 'S':text+="O";break;
case 'm':text+="u";break;case 'M':text+="U";break;
case 'd':text+="l";break;case 'D':text+="L";break;
case 'p':text+="b";break;case 'P':text+="B";break;
case 'h':text+="c";break;case 'H':text+="C";break;
case 'f':text+="w";break;case 'F':text+="W";break;
case 'u':text+="m";break;case 'U':text+="M";break;
case 'o':text+="d";break;case 'O':text+="D";break;
case 'i':text+="p";break;case 'I':text+="P";break;
case 'e':text+="h";break;case 'E':text+="H";break;
case 'a':text+="f";break;case 'A':text+="F";break;
case 'w':text+="v";break;case 'W':text+="V";break;
case 'c':text+="n";break;case 'C':text+="N";break;
case 'b':text+="r";break;case 'B':text+="R";break;
case 'l':text+="s";break;case 'L':text+="S";break;
case '!':text+="/";break;
case '?':text+="$";break;
case '@':text+="*";break;
case '.':text+="#";break;
case '/':text+=".";break;
case '$':text+="@";break;
case '*':text+="?";break;
case '#':text+="!";break;
case '7':text+="0";break;
case '9':text+="3";break;
case '8':text+="5";break;
case '4':text+="8";break;
case '6':text+="9";break;
case '0':text+="7";break;
case '3':text+="1";break;
case '5':text+="2";break;
case '2':text+="4";break;
case '1':text+="6";break;
default:text+=letra;break;
}
}
return (text);
}
public static void main(String args[]){
Servidor app=new Servidor();
app.addWindowListener(new WindowAdapter(){
public void windoClosing(WindowEvent e){
System.exit(0);
}
}
);
app.runServidor();
}
}
