Oi pessoal!
To com um problema em um código de um ‘servidor’ que estou escrevendo, é bem pouca coisa, só tenho que receber a mensagem e retorna-la com letras maiúsculas e minúsculas intercaladas, tipo: RoDa AsSiM mEsMo
Mas infelizmente, apesar da maioria das letras tendo saída correta ainda estou com uns probleminhas.
[code]import java.io.;
import java.net.;
public class tcpServer{
public static void main(String[] args)throws IOException {
// Verifica se a qtide de parâmetros de entrada está correta
if(args.length != 1){
System.out.println("> Uso: java tcpServidor Porta");
System.exit(0);
}
ServerSocket soqueteEsperaConexao = new ServerSocket( Integer.parseInt( args[0]));
System.out.println("Servidor rodando: " + soqueteEsperaConexao);
try{
while (true) {
Socket socket = soqueteEsperaConexao.accept();
try {
System.out.println(">Conexão aceita: " + socket);
BufferedReader fluxoEntrada = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String mensagem = fluxoEntrada.readLine();
System.out.println(">mensagem recebida do cliente: " + mensagem + "\n");
PrintWriter fluxosaida = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
StringBuilder sb = new StringBuilder(); //cria nova referencia de stringbuilder
for (int i = 0; i < mensagem.length(); i++) { //loop para por toda mensagem
char ch = mensagem.charAt(i); //usa charAt para pegar um indice do array de caracteres
sb.append(i % 2 == 0 ? (char) (ch & 95) : (char)(ch | 32));
}
fluxosaida.println(sb.toString());//transforma o stringbuilder para string
}finally{
socket.close();
}
}//fim while
}finally{
soqueteEsperaConexao.close();
}
}
}[/code]
O argumento que estou passando no cliente é ‘teste do servidor’ e o servidor retorna ‘TeStE Do sErViDoR’, mas deveria ser ‘TeStE dO sErViDoR’.
Alguém ai pode me dar uma luz de como arrumar isso?