Ola pessoal, gostaria que alguem me desse uma mão, eu tenho o codigo de um cliente servidor. o servidor espera o cliente entrar e lista o resultado da busca do cliente. o cliente pode fazer busca no servidor e se achar o arquivo de seu interesse baixa-lo. Eis o codigo:
servidor.java
import java.io.*;
import java.net.*;
import java.util.*;
public class servidor extends Thread {
public static void main(String args[])
{
clientes = new Vector();
try
{
ServerSocket s = new ServerSocket(2222);
System.out.println("Esperando alguém fazer busca...");
Socket conexao = s.accept();
// Pegar a string enviada
Thread t = new servidor(conexao);
t.start();
}
catch (IOException e)
{
// caso ocorra alguma excessão de E/S, mostre qual foi.
System.out.println("IOException: " + e);
}
}
private static Vector clientes;
private Socket conexao;
private String meuNome;
public servidor(Socket s)
{
conexao = s;
}
public void run()
{
try
{
BufferedReader entrada = new BufferedReader(new InputStreamReader(conexao.getInputStream()));
PrintStream saida = new PrintStream(conexao.getOutputStream());
// Testando
File f = new File(".");
File dir = new File(f.getAbsolutePath());
String[] children = dir.list();
if (children == null)
{
// Either dir does not exist or is not a directory
}
else
{
for (int i=0; i<children.length; i++)
{
// Get filename of file or directory
String filename = children[i];
System.out.println(filename);
}
}
// It is also possible to filter the list of returned files.
// This example does not return any files that start with `.'.
FilenameFilter filter = new FilenameFilter()
{
public boolean accept(File dir, String name)
{
return !name.startsWith(".");
}
};
children = dir.list(filter);
// The list of files can also be retrieved as File objects
File[] files = dir.listFiles();
// This filter only returns directories
FileFilter fileFilter = new FileFilter()
{
public boolean accept(File file)
{
return file.isDirectory();
}
};
files = dir.listFiles(fileFilter);
//
// primeiramente, espera-se pelo nome do cliente
meuNome = entrada.readLine();
// agora, verifica se string recebida é valida, pois
// sem a conexão foi interrompida, a string é null.
// Se isso ocorrer, deve-se terminar a execução.
if (meuNome == null)
{
return;
}
// Uma vez que se tem um cliente conectado e conhecido,
// coloca-se fluxo de saída para esse cliente no vetor de
// clientes conectados.
clientes.add(saida);
// clientes é objeto compartilhado por várias threads!
// De acordo com o manual da API, os métodos são
// sincronizados. Portanto, não há problemas de acessos
// simultâneos.
// Loop principal: esperando por alguma string do cliente.
// Quando recebe, envia a todos os conectados até que o
// cliente envie linha em branco.
// Verificar se linha é null (conexão interrompida)
// Se não for nula, pode-se compará-la com métodos string
String linha = entrada.readLine();
while (linha != null && !(linha.trim().equals("")))
{
// reenvia a linha para todos os clientes conectados
sendToAll(saida, " disse: ", linha);
// espera por uma nova linha.
linha = entrada.readLine();
}
// Uma vez que o cliente enviou linha em branco, retira-se
// fluxo de saída do vetor de clientes e fecha-se conexão.
sendToAll(saida, " saiu ", "do chat!");
clientes.remove(saida);
conexao.close();
}
catch (IOException e)
{
// Caso ocorra alguma excessão de E/S, mostre qual foi.
System.out.println("IOException: " + e);
}
}//final do void run
// enviar uma mensagem para todos, menos para o próprio
public void sendToAll(PrintStream saida, String acao, String linha) throws IOException
{
Enumeration e = clientes.elements();
while (e.hasMoreElements())
{
// obtém o fluxo de saída de um dos clientes
PrintStream chat = (PrintStream) e.nextElement();
// envia para todos, menos para o próprio usuário
if (chat != saida)
{
chat.println(meuNome + acao + linha);
}
}
}
}
busca1.java (cliente)
import java.io.*;
import java.net.*;
public class cliente {
private static boolean done = false;
public static void main(String args[])
{
try {
Socket conexao = new Socket("200.203.56.133", 2222);
PrintStream saida = new PrintStream(conexao.getOutputStream());
BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Busca: ");
String busca = teclado.readLine();
saida.println(busca);
}
catch (IOException e) {
// Caso ocorra alguma excessão de E/S, mostre qual foi.
System.out.println("IOException: " + e);
}
}
}
alguem pode me ajudar com isso? só tá faltando baixar o arquivo…
Obrigado!