Java Boy 0 Denunciar post Postado Setembro 15, 2008 Olá pessoal, estou fazendo uma aplicação que realiza a comunicação cliente/servidor, via Socket, além disso, quero fazer com que o cliente envie uma mensagem para o servidor solicitando do servidor o nome de uma determinada String que se encontra em um determinado Banco de Dados. O banco de dados é composto da coluna cof_name, que representa o nome do café, além da coluna price que representa o preço do café. Existem outras colunas neste BD, porém as duas que quero ter acesso são essas. O código do programa está representado abaixo, nele eu já consigo fazer a comunicação entre os dois e enviar a String para o banco. Entretando, no console do cliente não aparece nenhum dado de confirmação, ou seja, uma entrada. Além disso eu não sei como faço para o cliente ficar enviando sempre a String e o servidor ficar respondendo, ou seja, o cliente solicita, o servidro entra no banco de dados, pega a String e , se existir, retorna para o cliente. Já consigo fazer com que o servidor fique aguardando uma dado do cliente, além de fazer com que o servidor entre no banco de dados. Estou utilizando a IDE NetBeans 6.5 e o BD MySQL. Percebam que já fiz algumas tentativas que estão comentadas, além disso, já configurei o banco de dados na plataforma corretament e antes de rodar o programa faço as conexões necessárias. Outra coisa, as mensagens no console do cliente e do servidor são as seguintes: Cliente: init: deps-jar: compile-single: run-single: BUILD SUCCESSFUL (total time: 0 seconds) Servidor: init: deps-jar: compile-single: run-single: Aguardando uma conexão cliente Dado recebido Recebendo dados do cliente BUILD STOPPED (total time: 17 seconds) Abaixo as classes: CLASSE SERVIDOR /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package sockets; /** * * @author Raimundo */ //import socketstestados.Servidor; import java.net.*; import java.io.*; // IMPORTS DO BANCO DE DADOS //import java.sql.Statement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; //import java.util.Scanner; public class SocketsServer { SocketsServer aux = new SocketsServer(); public static void main(String[] args) throws IOException { //CONEXÃO COM O BANCO DE DADOS try { //Class.forName("org.gjt.mm.mysql.Driver"); Class.forName("com.mysql.jdbc.Driver"); Connection conexao = DriverManager.getConnection("jdbc:mysql://localhost/sale", "root", "root"); PreparedStatement comando2 = conexao.prepareStatement("SELECT cof_name, price FROM Coffee"); try { //PreparedStatement comando3 = conexao.prepareStatement("UPDATE Coffee SET price=?"); comando2.executeQuery(); ResultSet resultado = comando2.getResultSet(); conexao.setAutoCommit(false); Socket socket = null; ServerSocket serverSocket = new ServerSocket(7000); System.out.println("Aguardando uma conexão cliente"); while (resultado.next()) { String name = resultado.getString("cof_name"); String preco= resultado.getString("price"); //System.out.println("Nome selecionado:" + name); socket = serverSocket.accept(); //CRIA UM CANAL PARA RECEBER DADOS DataOutputStream oStream = new DataOutputStream(socket.getOutputStream()); DataOutputStream oStream2 = new DataOutputStream(socket.getOutputStream()); //CRIA UM CANAL PARA ENVIAR DADOS DataInputStream iStream = new DataInputStream(socket.getInputStream()); System.err.println("Recebendo dados do cliente"); //Aguardando recebimento dos dados String in = iStream.readUTF(); System.out.println("Dado recebido" + " " + in); /** if (in.equals(name)){ oStream2.writeUTF(name); System.out.println("Nome selecionado:" + name); }else if (in.equals(preco)) oStream.writeUTF(preco); */ oStream2.writeUTF(name); socket.close(); } /** Scanner teclado = new Scanner(System.in); System.out.print("Escolha o produto e digite o novo preço:"); String novopreco= teclado.nextLine(); Statement comando3 = conexao.createStatement(); comando3.executeUpdate("UPDATE Coffee SET price='"+novopreco+"' WHERE cof_name='America'"); System.out.print("Preco atualizado:" +novopreco); */ conexao.commit(); conexao.setAutoCommit(true); comando2.close(); //comando3.close(); conexao.close(); } catch (SQLException erro) { System.out.println("Erro no SQL: " + erro.getMessage()); } //atualizaPrecoCafe(conexao); conexao.close(); } catch (ClassNotFoundException erro) { System.out.println(erro.getMessage()); } catch (SQLException e) { System.out.println("Erro no SQL: " + e.getMessage()); } } } CLASSE CLIENTE package sockets; /* * To change this template, choose Tools | Templates * and open the template in the editor. */ /** * * @author Raimundo */ // import java.io.BufferedReader; import java.io.BufferedReader; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; //import java.io.InputStreamReader; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintStream; //import java.net.ServerSocket; import java.io.PrintWriter; import java.net.Socket; import java.util.Scanner; public class Client_1 { Client_1 obj=new Client_1(); public static void main(String[] args) { //Declaro o socket cliente Socket s = null; //Declaro a Stream de saida de dados //PrintStream ps = null; try{ //Cria o socket com o recurso desejado na porta especificada s = new Socket("127.0.0.1",7000); BufferedReader inputStream = new BufferedReader(new InputStreamReader(s.getInputStream())); //PrintWriter outputStream = new PrintWriter(new OutputStreamWriter(s.getOutputStream()),true); //Cria a Stream de saida de dados // ps = new PrintStream(s.getOutputStream()); DataInputStream iStream = new DataInputStream(s.getInputStream()); DataOutputStream oStream = new DataOutputStream(s.getOutputStream()); //Scanner teclado = new Scanner(System.in); // String test="Fim"; //Alterado // while (teclado.nextLine().equals(test)){ //Alterado //Scanner teclado = new Scanner(System.in); // System.out.print("Digite o nome do café:"); //String novopreco= teclado.nextLine(); String referenciaCafe=""; oStream.writeUTF(referenciaCafe); //oStream.writeUTF(novopreco); //outputStream.println("Brasil"); ///String recebe=iStream.readUTF(); //System.out.println(inputStream.readLine()); //System.out.println("Nome do café:" +" " +recebe); //Modificação //Imprime uma linha para a stream de saída de dados //ps.println("Estou enviando dados para o servidor"); //inputStream.close(); //outputStream.close(); iStream.close(); oStream.close(); }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){} } }} Compartilhar este post Link para o post Compartilhar em outros sites
sublyer 0 Denunciar post Postado Setembro 16, 2008 Qual é seu problema? não consegui compreender. Compartilhar este post Link para o post Compartilhar em outros sites
Java Boy 0 Denunciar post Postado Setembro 17, 2008 Qual é seu problema? não consegui compreender.Olha só, eu não estav conseguindo fazer o Servidor se comunicar constantemet com o cliente, agora já consigo. Meu próximo passo é fazer com que o cliente envie a solicitação de uma string para o servidor, solicitando-o verificar se o mesmo pode encontrá-la cadastrada em um BD. Para isso ele deverá entrar no BD, pegar uma String e enviar para o cliente. Depois vou fazer com o servidor atualize um dado, passado pelo cliente, no banco de dados. Obrigado! Compartilhar este post Link para o post Compartilhar em outros sites