sexta-feira, 12 de novembro de 2010

Servidor FTP em Java usando sockets

Classe cliente:

/**
* @author marcio.ishida
*
*/
public class ClienteMain {

/**
* @param args
*/
public static void main(String[] args) {
int port = 5298;
String IP = "localhost";
// Caminho do destinho
//String caminhoDestino = "C:/Temp/Arquivo/";
String caminhoDestino = "C:/Documents and Settings/marcio.ishida/Desktop/arquivos/";
try {
// Abrindo o socket
Socket MyClient = new Socket(IP, port);

// Cria stream de entrada e saída
DataInputStream input = new DataInputStream(MyClient.getInputStream());
DataOutputStream output = new DataOutputStream(MyClient.getOutputStream());
// Recebe mensagem
System.out.println(input.readUTF());

String arquivo = JOptionPane.showInputDialog("Entre com o nome do aqruivo");
// Envia mensagem
output.writeUTF(arquivo);

ObjectInputStream in = new ObjectInputStream(MyClient.getInputStream());
String fileName = in.readUTF();

if(fileName != null){
long size = in.readLong();
System.out.println("Processando arquivo: " + fileName + " - "+ size + " bytes.");

// Verifica se tem a pasta de destino criada, caso nao tenha ele cria
File file = new File(caminhoDestino);
if(file.exists() == false){
file.mkdir();
}

FileOutputStream fos = new FileOutputStream(caminhoDestino + fileName);
byte[] buf = new byte[4096];
while (true) {
int len = in.read(buf);
if (len == -1)
break;

fos.write(buf, 0, len);
}

fos.flush();
fos.close();
}
System.out.println(input.readUTF());
MyClient.close();

} catch (Exception e) {
System.err.println("CLIENTE ERRO: " + e.toString());
}

}

}


Classe servidor:


/**
* @author marcio.ishida
*
*/
public class ServerMain {

/**
* @param args
*/
public static void main(String[] args) {
int port = 5298;
try {
// Abrindo o socket
ServerSocket ss = new ServerSocket(port);

// Caminho que vai procurar o arquivo passado pelo cliente
String caminho = "C:/Documents and Settings/marcio.ishida/Meus documentos/";
//File f = new File("C:/Documents and Settings/marcio.ishida/Meus documentos/telaStatus.jar");
while (true) {
System.out.println("Esperando por arquivos.");
Socket socket = ss.accept();

DataInputStream input = new DataInputStream(socket.getInputStream());
DataOutputStream output = new DataOutputStream(socket.getOutputStream());
// Envia mensagem
output.writeUTF("Bem-vindo, você está conectado.");

String arquivo = input.readUTF();
System.out.println("Arquivo :" + arquivo);
File file = new File(caminho + arquivo);

if(file.exists()){
ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream());
System.out.println("Transferindo o arquivo: " + file.getName());
out.writeUTF(file.getName());
out.writeLong(file.length());
FileInputStream filein = new FileInputStream(file);
byte[] buf = new byte[4096];

while (true) {
int len = filein.read(buf);
if (len == -1)
break;
out.write(buf, 0, len);
}
out.close();
output.writeUTF("Arquivo enviado:");

}else{
output.writeUTF("Não existe o arquivo!");
}
ss.close();
}
} catch (Exception e) {
System.err.println("SERVIDOR ERRO: " + e.toString());
}

}

}


REFERÊNCIA : http://guj.com.br/article.show.logic?id=154

Nenhum comentário:

Postar um comentário