Daê Galera, blz? Assim, tô com um problema, que não consegui resolver, eu quero passar uma instrução SQL para o Servidor e Retornar para o cliente um XML.
Porém, quando vai receber os dados de volta do servidor, ele dá o seguinte Erro:
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:168)
at java.io.DataInputStream.read(DataInputStream.java:83)
at DAO.DaoCliente.Busca(DaoCliente.java:60)
at catalogocliente.CatalogoCliente.btBuscaByWordActionPerformed(CatalogoCliente.java:375)
at catalogocliente.CatalogoCliente.access$100(CatalogoCliente.java:26)
at catalogocliente.CatalogoCliente$2.actionPerformed(CatalogoCliente.java:118)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
e mais...
Vou passar a classe cliente e a classe servidor...
Classe Cliente
public class DaoCliente {
XMLFactory xml = new XMLFactory();
private byte buffer[];
FileInputStream fs;
public ArrayList<Produto> Busca(String SQL) throws ConnectException, IOException, JDOMException {
ArrayList<Produto> prod = new ArrayList<Produto>();
//Declaro o socket cliente
String end = "c:\";
String arq = "catalogoCliente.xml";
try {
Socket s = new Socket("127.0.0.1", 5432);
if (s.isConnected()) {
//enviando a instrução SQL
OutputStream SQLout = s.getOutputStream();
DataOutputStream dosSQL = new DataOutputStream(SQLout);
//envia a mensagem
dosSQL.writeUTF(SQL);
DataInputStream entrada = new DataInputStream(s.getInputStream());
// FileOuputStream para salvar o arquivo recebido
FileOutputStream sarq = new FileOutputStream(end + arq);
byte[] br = new byte[512];
int leitura = entrada.read(br);
while (leitura != -1) {
if (leitura != -2) {
sarq.write(br, 0, leitura);
}
leitura = entrada.read(br);
}
prod = xml.importXML();
return prod;
}
} catch (IOException e) {
e.printStackTrace();
}
//dos.close();
//s1.close();
//Trata possíveis exceções
return prod;
}
}
public static void main(String[] args) throws IOException {
CatServidor cs = new CatServidor();
// cria o nosso socket
ServerSocket servsock = new ServerSocket(5432);
System.out.println("Aguardando Conexão......");
Socket sock = servsock.accept();
daoCatalogo dc = new daoCatalogo();
System.out.println("Conexão aceita");
InputStream isSQL = sock.getInputStream();
DataInputStream disSQL = new DataInputStream(isSQL);
String SQL = disSQL.readUTF();
System.out.println(SQL);
try {
ArrayList<produto> prodList = dc.busca(SQL);
XMLArquivo.ExportXMLProdutos(prodList);
String myFile = "c:\catalogoServidor.xml";
byte buffer[] = new byte[512];
//Leitura do arquivo solicitado
FileInputStream file = new FileInputStream(myFile);
//DataInputStream para processar o arquivo solicitado
DataInputStream arq = new DataInputStream(file);
DataOutputStream saida = new DataOutputStream(sock.getOutputStream());
// sock.flush();
int leitura = arq.read(buffer);
//Lendo os bytes do arquivo e enviando para o socket
while (leitura != - 1) {
if (leitura != - 2) {
saida.write(buffer, 0, leitura);
}
leitura = arq.read(buffer);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Abraço a todos e agradeço pela ajuda