Olá galera!! nao sei se eu to repetindo esse tópico, eu vi alguns sobre o assunto mais eram programas ja feitos, eu queria saber por onde eu começo, eu quero fazer um programa que transfira arquivos via socket em java, eu desenvolvi um que transfere “textos”, queria saber o que muda? e se preciso ou é obrigatório usar Threads? Abraço a a todos!
Transferências de Arquivos com Sockets
2 Respostas
Vc teria que desenvolver um protocolo para isso.
Vlw ai peczenyj, mas eu acho que tu não entendeu minha pergunta ou eu perguntei mau, hehehe nao faz mal eu ja consegui sanar minha dúvida, era sobre o uso de quais classes eu iria usar para transferencia de arquivos via socket, ai eu to usando FileInputStream, FileOutputStream, BufferedInputStream e BufferedOutputStream, vo colokar o codigo aqui para se surgirem outras pessoas com a mesma dúvida 
Classe Servidor
import java.io.BufferedReader;
import java.io.IOException;
import java.io.FileOutputStream;
import java.io.FileInputStream;
import java.io.File;
import java.io.BufferedInputStream;
import java.net.ServerSocket;
import java.net.Socket;
import javax.swing.JOptionPane;
public class Servidor {
public static void main(String[] args) {
//Declaro o ServerSocket
ServerSocket serv=null;
//Declaro o Socket de comunicação
Socket s= null;
try{
//Cria o ServerSocket na porta 7000 se estiver disponível
serv = new ServerSocket(7000);
//Aguarda uma conexão na porta especificada e cria retorna o socket que irá comunicar com o cliente
s = serv.accept();
//Cria um BufferedReader para o canal da stream de entrada de dados do socket s
BufferedInputStream entrada = new BufferedInputStream(s.getInputStream());
File fi = new File("/var/www/web/aq/avatar.png");
FileOutputStream fe = new FileOutputStream(fi);
byte[] b = new byte[256];
int i=-1;
while ( (i=entrada.read(b)) != -1){
//ta dando pau aqui
fe.write(b);
}
//trata possíveis excessões de input/output. Note que as excessões são as mesmas utilizadas para as classes de java.io
}catch(IOException e){
//Imprime uma notificação na saída padrão caso haja algo errado.
System.out.println("Algum problema ocorreu para criar ou receber o socket.");
}finally{
try{
//Encerro o socket de comunicação
s.close();
//Encerro o ServerSocket
serv.close();
}catch(IOException e){
}
}
}
}
Classe Cliente
import java.io.IOException;
import java.io.FileInputStream;
import java.io.File;
import java.io.BufferedOutputStream;
import java.net.Socket;
import javax.swing.JOptionPane;
public class Cliente {
public static void main(String[] args) {
//Declaro o socket cliente
Socket s = null;
try{
//Cria o socket com o recurso desejado na porta especificada
s = new Socket("127.0.0.1",7000);
String end = JOptionPane.showInputDialog("Digite o local do arquivo desejado:");
File f = new File(end);
FileInputStream fe = new FileInputStream(f);
BufferedOutputStream in = new BufferedOutputStream(s.getOutputStream());
byte[] b = new byte[(int)f.length()];
int i=-1;
while ( (i=fe.read(b)) !=-1){
in.write(b);
}
in.close();
fe.close();
//Trata possíveis exceções
}catch(IOException e){
System.out.println("Algum problema ocorreu ao criar ou enviar dados pelo socket.");
}finally{
try{
//Encerra o socket cliente
s.close();
}catch(IOException e){}
}
}
}
Desculpa ai nao ta comentado, mais qq duvida responde aqui que eu ajudarei, Abraços a todos!
Criado 15 de outubro de 2007
Ultima resposta 16 de out. de 2007
Respostas 2
Participantes 2
Alura Sistemas operacionais: entenda seu conceito e suas funções Descubra o que são sistemas operacionais, suas funções e tipos. Aprenda tudo de forma clara e objetiva. Não perca tempo!
Casa do Codigo Orientacao a Objetos: Aprenda seus conceitos e suas... Por Thiago Leite e Carvalho — Casa do Codigo