Daê galera do GUJ, tô com um problema que tá me incomodando...
Eu tenho uma conexao via socket e quero passar um xml pro cliente, porém ao passar o arquivo ele salva um arquivo vazio.
queria saber se tem(e com certeza tem) algo que eu esqueci...
eis o meu código do Servidor
public static void main(String[] args) throws IOException {
CatServidor cs = new CatServidor();
// cria o nosso socket
ServerSocket servsock = new ServerSocket(13267);//Problema aqui
System.out.println("Aguardando Conexão......");
Socket sock = servsock.accept();
while (true) {
System.out.println("Conexão aceita: " + sock);
try {
ArrayList<produto> prodList = cs.dao.listar();
XMLArquivo.ExportXMLProdutos(prodList);
String myFile = "c:\\catalogoServidor.xml";
// envia o arquivo (transforma em byte array)
byte[] mybytearray = new byte[(int) myFile.length()];
FileInputStream fis = new FileInputStream(myFile);
BufferedInputStream bis = new BufferedInputStream(fis);
bis.read(mybytearray, 0, mybytearray.length);
OutputStream os = sock.getOutputStream();
////envia
System.out.println("Enviando...");
os.write(mybytearray, 0, mybytearray.length);
os.flush();
servsock.close();
} catch (IOException ex) {
ex.printStackTrace();
} catch (Exception e) {
System.out.println("erro ao buscar os dados" + e);
e.printStackTrace();
}
e o meu cliente
public class DaoCliente {
XMLFactory xml;
private byte buffer[];
// FileInputStream fs;
public ArrayList<Produto> Conecta() throws ConnectException, IOException, JDOMException {
ArrayList<Produto> prod = new ArrayList<Produto>();
String end = "c:\\";
String arq = "catalogoCliente.xml";
try {
//estabelece conexao
Socket sock = new Socket("127.0.0.1", 13267);
// DataInputStream para processar os bytes recebidos
DataInputStream entrada = new DataInputStream(sock.getInputStream());
//FileOuputStream para salvar o arquivo recebido
FileOutputStream file = new FileOutputStream(end + arq);
//Busca o XML salvo no C:
// BufferedInputStream in = new BufferedInputStream(sock.getInputStream());
// BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(end+arq));
int len = 0;
while ((len = entrada.read(buffer)) > 0) {
file.write(buffer, 0, len);
//System.out.print("#");
}
prod = xml.importXML();
sock.close();
return prod;
} catch (ConnectException e) {
e.printStackTrace();
}
return prod;
}
}
Obrigado se puderem me ajudar