Jump to content
Muloo

Problema com sockets ao fechar client java.net.SocketException

Recommended Posts

Olá, bom dia, boa tarde ou boa noite, estou tendo um problema, com um sistema que estou criando, agradeço a quem puder ajudar. Então, esse sistema basicamente passa um "protocolo" para os servidor e ele retorna um objeto, e vice-versa, porém, ao finalizar o cliente e reabrir sem fazer o mesmo com o servidor, é causado um erro no servidor, e ao tentar fazer algum retorno de um objeto após re-abrir o cliente é causado um erro.

Erro no server ao fechar o cliente:

java.net.SocketException: Connection reset
    at java.net.SocketInputStream.read(SocketInputStream.java:210)
    at java.net.SocketInputStream.read(SocketInputStream.java:141)
    at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)
    at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)
    at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
    at java.io.InputStreamReader.read(InputStreamReader.java:184)
    at java.io.BufferedReader.fill(BufferedReader.java:161)
    at java.io.BufferedReader.readLine(BufferedReader.java:324)
    at java.io.BufferedReader.readLine(BufferedReader.java:389)
    at main.java.Manager.run(Manager.java:45)

Erro no cliente ao reabrir e tentar obter o objeto:

java.io.StreamCorruptedException: invalid stream header: 73720013
    at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:866)
    at java.io.ObjectInputStream.<init>(ObjectInputStream.java:358)
    at main.java.controllers.VendedoresUI.load(VendedoresUI.java:69)
    at main.java.controllers.VendedoresUI.initialize(VendedoresUI.java:54)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2548)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3214)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3175)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3148)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3124)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3104)
    at javafx.fxml.FXMLLoader.load(FXMLLoader.java:3097)
    at main.java.controllers.Controller.loadUI(Controller.java:150)
    at main.java.controllers.Controller.changeUI(Controller.java:111)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71)
    at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275)
    at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1769)
    at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1657)
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
    at javafx.event.Event.fireEvent(Event.java:198)
    at javafx.scene.Scene$ClickGenerator.postProcess(Scene.java:3470)
    at javafx.scene.Scene$ClickGenerator.access$8100(Scene.java:3398)
    at javafx.scene.Scene$MouseHandler.process(Scene.java:3766)
    at javafx.scene.Scene$MouseHandler.access$1500(Scene.java:3485)
    at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1762)
    at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2494)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:394)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:295)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$353(GlassViewEventHandler.java:432)
    at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:389)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:431)
    at com.sun.glass.ui.View.handleMouseEvent(View.java:555)
    at com.sun.glass.ui.View.notifyMouse(View.java:937)
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at com.sun.glass.ui.win.WinApplication.lambda$null$147(WinApplication.java:177)
    at java.lang.Thread.run(Thread.java:748)

1. Classes do server:

1.1. Server.java

public class Server extends Thread{

    public Server(){}

    public void run() {

        try{

            ServerSocket listener = new ServerSocket(4444);
            listener.setSoTimeout(0);

            System.out.println("Server is now running");

            try {
                while (true) {

                    Socket socket = listener.accept();

                    new Manager(socket).start();
                }
            } finally {
                listener.close();
            }

        } catch (IOException ioexception){

            System.out.println("\u001B[31mError opening server, more info: ");
            System.out.println(ioexception);
            System.out.println("Closing server...");
            System.exit(0);

        }

    }

}

1.2. Manager.java

public class Manager extends Thread{
    private Socket socket;
    private BufferedReader in;
    private PrintWriter out;

    public Manager(Socket socket){
        this.socket = socket;
        System.out.println("\u001B[32m" + socket.getLocalAddress() + ":" + socket.getPort() + " connected");
    }

    @Override
    public void run() {

        try {

            out = new PrintWriter(socket.getOutputStream(), true);

            out.println("Connected");

            while(true) {
                ObjectOutputStream objectOutput = new ObjectOutputStream(socket.getOutputStream());
                in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

                if(in.readLine().contains(Protocols.VENDEDOR_GET_ALL)) {
                    ResultSet res = SQLManager.Query("SELECT * FROM vendedores");
                    List<Vendedor> list = new ArrayList<>();

                    while (res.next()) {
                        Vendedor vendedor = new Vendedor();
                        vendedor.setNOME(res.getString("NOME"));
                        vendedor.setCPF(res.getString("CPF"));
                        vendedor.setCONTATO(res.getString("CONTATO"));
                        vendedor.setCONTA(res.getInt("CONTA"));
                        vendedor.setBANCO(res.getInt("BANCO"));
                        vendedor.setAGENCIA(res.getString("AGENCIA"));
                        vendedor.setCORRENTE(res.getString("CORRENTE"));
                        list.add(vendedor);
                    }
                    objectOutput.writeObject(list);
                }
                objectOutput.flush();
            }

        } catch (IOException e) {
            System.out.println("\u001B[31m" + socket.getLocalAddress() + ":" + socket.getPort() + " disconnected");
            e.printStackTrace();
            interrupt();
        } catch (SQLException | ClassNotFoundException e) {
            Logger.getLogger(Manager.class.getName()).log(Level.SEVERE, null, e);
        }

    }
}

2. Classes do Client

2.1. ClientSocket.java

public class ClientSocket {

    private static Socket socket = null;
    private static BufferedReader in;
    private static PrintWriter out;

    public static void load(){
        try {

            socket = new Socket("127.0.0.1", 4444);
            in = new BufferedReader(
                    new InputStreamReader(socket.getInputStream()));
            out = new PrintWriter(socket.getOutputStream(), true);

            System.out.print(ClientSocket.getIn().readLine());

        } catch(IOException ioexception){
            Logger.getLogger(ClientSocket.class.getName()).log(Level.SEVERE, null, ioexception);
        }
    }

    public static Socket getSocket() {
        return socket;
    }

    public static BufferedReader getIn() {
        return in;
    }

    public static PrintWriter getOut() {
        return out;
    }
}

2.2 VendedoresUI.java

public class VendedoresUI implements Initializable {

    @FXML
    private TableView<Vendedor> table;

    @FXML
    private TableColumn<?, ?> colName;

    @FXML
    private TableColumn<?, ?> colCPF;

    @FXML
    private TableColumn<?, ?> colContato;

    @FXML
    private TableColumn<?, ?> colConta;

    @FXML
    private TableColumn<?, ?> colBanco;

    @FXML
    private TableColumn<?, ?> colAgencia;

    @FXML
    private TableColumn<?, ?> colCorrente;

    ObservableList<Vendedor> list;

    @Override
    public void initialize(URL location, ResourceBundle resources) {

        load();

    }

    private void load(){
        try {
            if(ClientSocket.getSocket().isClosed()){
                ClientSocket.load();
            }

            PrintWriter escritor = new PrintWriter(ClientSocket.getSocket().getOutputStream(), true);

            escritor.println(Protocols.VENDEDOR_GET_ALL);


            ObjectInputStream obi = new ObjectInputStream(ClientSocket.getSocket().getInputStream());
            List<Vendedor> mList = (List<Vendedor>) obi.readObject();

            list = FXCollections.observableArrayList(mList);

            colName.setCellValueFactory(new PropertyValueFactory<>("NOME"));
            colCPF.setCellValueFactory(new PropertyValueFactory<>("CPF"));
            colContato.setCellValueFactory(new PropertyValueFactory<>("CONTATO"));
            colConta.setCellValueFactory(new PropertyValueFactory<>("CONTA"));
            colBanco.setCellValueFactory(new PropertyValueFactory<>("BANCO"));
            colAgencia.setCellValueFactory(new PropertyValueFactory<>("AGENCIA"));
            colCorrente.setCellValueFactory(new PropertyValueFactory<>("CORRENTE"));
            table.setItems(list);

        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }

    }
}

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By michel a. medeiros
      Curso de Java para iniciantes.
       
      https://www.udemy.com/curso-java-para-iniciantes/?couponCode=IMASTER
       
      Acesse
    • By Augustomesquita
      Bom dia pessoal!
      Vocês também estão programando em primeira pessoa? Recentemente escrevi este artigo e gostaria de compartilhar a ideia com vocês.
      Pare de programar em primeira pessoa!
    • By daniel8634
      Fala pessoal, tudo bem?
      Estou com um problema com uma rotina, que tem como funcionalidade principal a fila, é uma rotina de fila, que basicamente funciona com o envio de uma solicitação e fica aguardando até o retorno dessa solicitação ser satisfeita, caso não ocorra passa para outra solicitação e fica com esse loop, até que se encerre o processo, o que esta ocorrendo é que aparentemente essa rotina fica travando em algum momento ou por algum motivo a resposta não chega de forma adequada para que o processo de fila funcione de forma correta, abaixo vou posta a rotina completa para vocês darem uma olhada e de repente visualizar algo que não esteja conseguindo visualizar, gostaria de contar com a ajuda de vocês para tentarem ver se tem algo de errado com a rotina.
       
      <?php error_reporting(0); include_once '../apporioconfig/start_up.php'; header("Content-Type: application/json"); include 'pn_android.php'; include 'pn_iphone.php'; include 'one-signal.php'; include 'firebase_new.php'; $query = "select * from admin_panel_settings WHERE admin_panel_setting_id=1"; $result = $db->query($query); $admin_settings = $result->row; $normal_ride_radius = $admin_settings['normal_ride_radius']; $admin_panel_request = $admin_settings['admin_panel_request']; $admin_panel_firebase_id = $admin_settings['admin_panel_firebase_id']; $onesignal_rest_key = $admin_settings['onesignal_rest_key']; $onesignal_app_id = $admin_settings['onesignal_app_id']; $onesignal_redirect_url = $admin_settings['onesignal_redirect_url']; $user_id = $_REQUEST['user_id']; $coupon_code = $_REQUEST['coupon_code']; $pickup_lat = $_REQUEST['pickup_lat']; $pickup_long = $_REQUEST['pickup_long']; $pickup_location = $_REQUEST['pickup_location']; $drop_lat = $_REQUEST['drop_lat']; $drop_long = $_REQUEST['drop_long']; $drop_location = $_REQUEST['drop_location']; $car_type_id = $_REQUEST['car_type_id']; $language_code = $_REQUEST['language_code']; $payment_option_id = $_REQUEST['payment_option_id']; $card_id = $_REQUEST['card_id']; $pem_file = $_REQUEST['pem_file']; if ($user_id != "" && $pickup_lat != "" && $pickup_long != "" && $pickup_location != "" && $car_type_id != "" && $payment_option_id != "") { if ($pem_file == "") { $pem_file = 1; } $time = date("H:i:s"); $dt = DateTime::createFromFormat('!d/m/Y', date("d/m/Y")); $data = $dt->format('M j'); $day = date("l"); $date1 = $day . ", " . $data; $date1 = strftime('%d-%m-%Y', strtotime($date1)); //CONTROLD - 13/10/2018 - Alteração para formatar data $query3 = "select * from driver where verification_status=1 AND driver_category IN (1,3) AND car_type_id='$car_type_id' and online_offline = 1 and driver_admin_status=1 and busy=0 and login_logout=1 order by rand()"; $result3 = $db->query($query3); $ex_rows = $result3->num_rows; if ($ex_rows == 0) { $image = ""; $last_time_stamp = date("h:i:s A"); $query1 = "INSERT INTO no_driver_ride_table(user_id,coupon_code, pickup_lat, pickup_long,pickup_location,drop_lat,drop_long,drop_location, ride_date,ride_time,ride_type,ride_status,ride_image,car_type_id,payment_option_id,card_id,last_time_stamp) VALUES ('$user_id','$coupon_code','$pickup_lat','$pickup_long','$pickup_location','$drop_lat','$drop_long','$drop_location', '$date1','$time','1','1','$image','$car_type_id','$payment_option_id','$card_id','$last_time_stamp')"; $db->query($query1); $language = "select * from table_messages where language_code='$language_code' and message_id=34"; $lang_result = $db->query($language); $lang_list = $lang_result->row; $message = $lang_list['message']; $re = array('result' => 0, 'msg' => $message); } else { $list3 = $result3->rows; $c = array(); foreach ($list3 as $login3) { $driver_lat = $login3['current_lat']; $driver_long = $login3['current_long']; $theta = $pickup_long - $driver_long; $dist = sin(deg2rad($pickup_lat)) * sin(deg2rad($driver_lat)) + cos(deg2rad($pickup_lat)) * cos(deg2rad($driver_lat)) * cos(deg2rad($theta)); $dist = acos($dist); $dist = rad2deg($dist); $miles = $dist * 60 * 1.1515; $km = $miles * 1.609344; if ($km <= $normal_ride_radius) { $c[] = array("driver_id" => $login3['driver_id'], "distance" => $km, ); } } // inicio rotina grava viagem //print_r($c); if (!empty($c)) { // aqui - CONTROLD - 28/01/2019 - Validação para verificar se já tem viagem em andamento ao solicitar uma nova viagem $query_verifica = "select user_id,viagem from user where user_id='$user_id' and viagem = 'S' order by user_id asc"; $result_verifica = $db->query($query_verifica); $quant_verifica = $result_verifica->num_rows; //if ($quant_verifica >= 1) { // $re = array('result' => 0, 'msg' => "Você já possui uma viagem em andamento, aguarde o motorista ou cancele a viagem.", 'details' => ""); //}else{ $image = ""; $date = date("Y-m-d"); $last_time_stamp = date("h:i:s A"); $query1 = "INSERT INTO ride_table (user_id,coupon_code, pickup_lat,pickup_long,pickup_location,drop_lat,drop_long,drop_location, ride_date,ride_time,ride_type,ride_status,ride_image,car_type_id,payment_option_id,card_id,last_time_stamp,date,pem_file) VALUES ('$user_id','$coupon_code','$pickup_lat','$pickup_long','$pickup_location','$drop_lat','$drop_long','$drop_location', '$date1','$time','1','1','$image','$car_type_id','$payment_option_id','$card_id','$last_time_stamp','$date','$pem_file')"; $db->query($query1); $last_id = $db->getLastId(); $query3 = "select * from ride_table where ride_id='$last_id'"; $result3 = $db->query($query3); $list = $result3->row; $ride_status = $list['ride_status']; $data_viagem = $list['ride_time']; sendMessage($onesignal_app_id, $onesignal_redirect_url, $onesignal_rest_key); $firebase_id = uniqid(); new_ride_sound($admin_panel_firebase_id, $firebase_id); clear($admin_panel_firebase_id, $firebase_id); $nodes = array(); $repetir = 0; foreach ($c as $value) { $distance[] = $value['distance']; } $repetir = 0; $id_motorista = "aaaa"; //array_multisort($distance, SORT_ASC, $c); foreach ($c as $driver) { // echo "aqui envia push ".$driver['driver_id'] ."<br>"; // echo "repetir: ".$repetir; // push // aqui $ride_id = (string)$last_id; $nodes[$driver_id] = array('ride_id' => $ride_id, 'ride_status' => "1"); $query3 = "select * from driver_ride_allocated where driver_id='$driver_id'"; $result3 = $db->query($query3); $driver_allocated = $result3->row; if (empty($driver_allocated)) { $query5 = "INSERT INTO driver_ride_allocated (driver_id,ride_id,ride_mode) VALUES ('$driver_id','$ride_id','1')"; $db->query($query5); } else { $query5 = "UPDATE driver_ride_allocated SET ride_id='$ride_id' WHERE driver_id='$driver_id'"; $db->query($query5); } if ($repetir == 1){ break; } $driver_id = $driver['driver_id']; $query4 = "select * from driver where driver_id='$driver_id'"; $result4 = $db->query($query4); $list4 = $result4->row; $device_id = $list4['device_id']; $language = "select * from table_messages where language_code='$language_code' and message_id=35"; $lang_result = $db->query($language); $lang_list = $lang_result->row; $message = $lang_list['message']; $ride_id = (String)$last_id; $ride_status = '1'; //echo "device id: ".$device_id."<br>"; //echo "driver id: ".$driver_id."<br>"; $codi_motorista = $driver['driver_id']; $query5 = "INSERT INTO ride_allocated (allocated_ride_id, allocated_driver_id,allocated_date) VALUES ('$ride_id','$codi_motorista','$date')"; $db->query($query5); new_ride($nodes,$admin_panel_firebase_id); if ($device_id != "") { // echo "entrou para enviar push"."<br>"; if ($list4['flag'] == 1) { IphonePushNotificationDriver($device_id, $message, $ride_id, $ride_status, $pem_file); }else { //echo "entrou no push android "."<br>"; //echo "device id: ".$device_id. "<br>"; //echo "message id: ".$message. "<br>"; //echo "ride id: ".$ride_id. "<br>"; //echo "ride status id: ".$ride_status. "<br>"; AndroidPushNotificationDriver($device_id, $message, $ride_id, $ride_status); } } //fim push //echo "entrou 0"; //echo "motorista while: ".$driver['driver_id']; //echo "id do motorista: ".$id_motorista ."<br>"; //echo "id do driver: ".$driver['driver_id'] ."<br>"; while ($repetir == 0) { $hora_atual = date('H:i:s'); //echo "hora atual: ".$hora_atual; //echo "<br>"." hora da viagem: ".$data_viagem; // echo "<br>"." diferença: ".calculaTempo($data_viagem,$hora_atual); //echo "<br>"."hora da viagem: ".$data_viagem; // inicio //echo "data 1: ".$data_viagem; //echo "<br>"."data 2 ".$hora_atual; /* if (calculaTempo($data_viagem,$hora_atual) >= 01){ //echo "parou na hora deu tempo "."<br>"; //$query_tempo = "UPDATE ride_table SET ride_status='40' WHERE user_id = '$user_id' and ride_id='$ride_id'"; // $db->query($query_tempo); $repetir = 1; break; } */ /*} else{ echo "entrou na hora continuou"."<br>"; continue; // continue; } */ //fim //echo "chegou rejeita? <br>"; $id_driver = $driver['driver_id']; //echo "id driver: ".$id_driver."<br>"; //echo "id da viagem ".$ride_id ."<br>"; $query_rejeita = "select reject_ride_id,reject_driver_id from ride_reject where reject_ride_id = '$ride_id' and reject_driver_id='$id_driver'"; $result_rejeita = $db->query($query_rejeita); $list_rejeita = $result_rejeita->num_rows; //echo "id do motorista: ".$driver['driver_id'] ."<br>"; //echo "rejeitou? ".$list_rejeita ."<br>"; if ($list_rejeita > 0){ //&& $codigo_motorista != $driver['driver_id']) { //echo "entrou 2"; //print_r("print motorista id: ".$driver); //echo "motorista: ".$driver['driver_id']; //echo "passou print <br>"; //// echo "entrou rejeitou"."<br>"; $repetir = 0; //$list_rejeita = 1; break; //continue; } else{ //echo "entrou else rejeitou"."<br>"; $repetir = 0; //continue; } // aceitou viagem //echo "aceitou: entrando verificação se aceitou"; //echo "Chegou aceitou viagem"."<br>"; //sleep(5); $query_consulta = "select ride_status from ride_table where ride_id = '$ride_id' and ride_status = '3' and user_id = '$user_id'"; $result_consulta = $db->query($query_consulta); $lista_consulta = $result_consulta->num_rows; //$repetir = $lista_consulta; //echo "aceitou: " . $lista_consulta; if ($lista_consulta >= 1) { //echo "aceitou viagem"."<br>"; $repetir = 1; // break; }else{ //echo "continuou aceitou viagem"."<br>"; $repetir = 0; continue; } //fim aceitou viagem // auto cancelada //echo "Chegou entrou alto cancelada"."<br>"; $query_autocancel = "select ride_status from ride_table where ride_id = '$ride_id' and (ride_status = '2' or ride_status = '15') and user_id = '$user_id'"; $result_autocancel = $db->query($query_autocancel); $lista_autocancel = $result_autocancel>num_rows; if ($lista_autocancel >= 1) { //echo "entrou alto cancelada"."<br>"; $repetir = 1; // break; }else{ //echo "continuou auto cancelada"."<br>"; // continue; } $query_autocancel_passageiro = "select ride_status from ride_table where ride_id = '$ride_id' and ride_status = '40' and user_id = '$user_id'"; $result_autocancel_passageiro = $db->query($query_autocancel_passageiro); $lista_autocancel_passageiro = $result_autocancel_passageiro>num_rows; if ($lista_autocancel_passageiro >= 1) { // echo "entrou alto cancelada"."<br>"; $repetir = 1; break; }else{ //echo "continuou auto cancelada"."<br>"; continue; } // fim auto cancelada // verifica se passou 1 minuto em relação a solicitação da viagem, caso sim sai fora //$hora_atual = date('H:i:s'); //echo "hora atual: ".$hora_atual; //echo "Diferença de hora: ".difDeHoras($hora_atual,$data_viagem); // fim //echo "aqui envia push"; if ($repetir == 0){ continue; } $id_motorista = $driver['driver_id']; } } // 28/01/2019 - CONTROLD - Atualiza campo na tabela de usuarios para controlar solicitação de viagens //$query_update_user = "UPDATE user SET viagem='S' WHERE user_id='$user_id'"; //$db->query($query_update_user); $query5 = "INSERT INTO table_user_rides(booking_id,ride_mode,user_id) VALUES ('$last_id','1','$user_id')"; $db->query($query5); $query3 = "select * from ride_table where ride_id='$last_id'"; $result3 = $db->query($query3); $list = $result3->row; //echo "entrou aqui"; $re = array('result' => 1, 'msg' => "" . $km, 'details' => $list); //} } else { $image = ""; $last_time_stamp = date("h:i:s A"); $query1 = "INSERT INTO no_driver_ride_table (user_id,coupon_code, pickup_lat, pickup_long,pickup_location,drop_lat,drop_long,drop_location, ride_date,ride_time,ride_type,ride_status,ride_image,car_type_id,payment_option_id,card_id,last_time_stamp) VALUES ('$user_id','$coupon_code','$pickup_lat','$pickup_long','$pickup_location','$drop_lat','$drop_long','$drop_location', '$date','$time','1','1','$image','$car_type_id','$payment_option_id','$card_id','$last_time_stamp')"; $db->query($query1); $language = "select * from table_messages where language_code='$language_code' and message_id=36"; $lang_result = $db->query($language); $lang_list = $lang_result->row; $message = $lang_list['message']; $re = array('result' => 0, 'msg' => "Sem motorista", ); } } }else{ $re = array('result' => 0, 'msg' => "Faltou informar algum campo"); } echo json_encode($re, JSON_PRETTY_PRINT); /* function difDeHoras($hIni, $hFinal) { // Separa á hora dos minutos $hIni = explode(':', $hIni); $hFinal = explode(':', $hFinal); // Converte a hora e minuto para segundos $hIni = (60 * 60 * $hIni[0]) + (60 * $hIni[1]); $hFinal = (60 * 60 * $hFinal[0]) + (60 * $hFinal[1]); // Verifica se a hora final é maior que a inicial if(!($hIni < $hFinal)) { return false; } // Calcula diferença de horas $difDeHora = $hFinal - $hIni; //Converte os segundos para Hora e Minuto $tempo = $difDeHora / (60 * 60); $tempo = explode('.', $tempo); // Aqui divide o restante da hora, pois se não for inteiro, retornará um decimal, o minuto, será o valor depois do ponto. $hora = $tempo[0]; @$minutos = (float) (0) . '.' . $tempo[1]; // Aqui forçamos a conversão para float, para não ter erro. $minutos = $minutos * 60; // Aqui multiplicamos o valor que sobra que é menor que 1, por 60, assim ele retornará o minuto corretamente, entre 0 á 59 minutos. $minutos = explode('.', $minutos); // Aqui damos explode para retornar somente o valor inteiro do minuto. O que sobra será os segundos $minutos = $minutos[0]; //Aqui faz uma verificação, para retornar corretamente as horas, mas se não quiser, só mandar retornar a variavel hora e minutos if (!(isset($tempo[1]))) { if($hora == 1){ return $hora; } else { return $hora; } } else { if($hora == 1){ if($minutos == 1){ return $hora;//'A diferen&ccedil;a &eacute; de ' . $hora . ' Hora e ' .$minutos . ' Minuto.'; } else { return $hora;//'A diferen&ccedil;a &eacute; de ' . $hora . ' Hora e ' .$minutos . ' Minutos.'; } } else { if($minutos == 1){ return $minutos; } else { return $minutos; } } } } */ function calculaTempo($hora_inicial, $hora_final) { $i = 1; $tempo_total; $tempos = array($hora_final, $hora_inicial); foreach($tempos as $tempo) { $segundos = 0; list($h, $m, $s) = explode(':', $tempo); $segundos += $h * 3600; $segundos += $m * 60; $segundos += $s; $tempo_total[$i] = $segundos; $i++; } $segundos = $tempo_total[1] - $tempo_total[2]; $horas = floor($segundos / 3600); $segundos -= $horas * 3600; $minutos = str_pad((floor($segundos / 60)), 2, '0', STR_PAD_LEFT); $segundos -= $minutos * 60; $segundos = str_pad($segundos, 2, '0', STR_PAD_LEFT); return "$minutos"; } ?>  
    • By CiCLON3
      Preciso criar um programa que faça 3 execuções:
      A soma de todos os números pares não primos que antecedem N; A soma de todos os números ímpares não primos que antecedem N; A soma de todos os números primos que antecedem N.    Mas não sei como, sei imprimir os primos, pares e impares ate n, mas fazer a soma não.
    • By brombs1103
      tenho um programa para fazer porem precisa ser em python e so consegui fazer em Java. Aguem pode me ajudar?
      segue programa abaixo:
        import java.util.Scanner; import java.util.Random; public class Caixa { public static void main(String[] args){ // Declarando as variáveis, Scanner e Random String nome; double inicial; Scanner entrada = new Scanner(System.in); Random numero = new Random(); int conta = 1 + numero.nextInt(9999); //Obtendo os dados iniciais do Cliente System.out.println("Cadastrando novo cliente."); System.out.print("Ente com seu nome: "); nome = entrada.nextLine(); System.out.print("Entre com o valor inicial depositado na conta: "); inicial = entrada.nextDouble(); //Criando a conta de um cliente Conta minhaConta = new Conta(nome, conta, inicial); minhaConta.iniciar(); } }
      Conta.java 
        import java.util.Scanner; public class Conta { private String nome; private int conta, saques; private double saldo; Scanner entrada = new Scanner(System.in); public Conta(String nome, int conta, double saldo_inicial){ this.nome=nome; this.conta=conta; saldo=saldo_inicial; saques=0; } public void extrato(){ System.out.println("\tEXTRATO"); System.out.println("Nome: " + this.nome); System.out.println("Número da conta: " + this.conta); System.out.printf("Saldo atual: %.2f\n",this.saldo); System.out.println("Saques realizados hoje: " + this.saques + "\n"); } public void sacar(double valor){ if(saldo >= valor){ saldo -= valor; saques++; System.out.println("Sacado: " + valor); System.out.println("Novo saldo: " + saldo + "\n"); } else { System.out.println("Saldo insuficiente. Faça um depósito\n"); } } public void depositar(double valor) { saldo += valor; System.out.println("Depositado: " + valor); System.out.println("Novo saldo: " + saldo + "\n"); } public void iniciar(){ int opcao; do{ exibeMenu(); opcao = entrada.nextInt(); escolheOpcao(opcao); }while(opcao!=4); } public void exibeMenu(){ System.out.println("\t Escolha a opção desejada"); System.out.println("1 - Consultar Extrato"); System.out.println("2 - Sacar"); System.out.println("3 - Depositar"); System.out.println("4 - Sair\n"); System.out.print("Opção: "); } public void escolheOpcao(int opcao){ double valor; switch( opcao ){ case 1: extrato(); break; case 2: if(saques<3){ System.out.print("Quanto deseja sacar: "); valor = entrada.nextDouble(); sacar(valor); } else{ System.out.println("Limite de saques diários atingidos.\n"); } break; case 3: System.out.print("Quanto deseja depositar: "); valor = entrada.nextDouble(); depositar(valor); break; case 4: System.out.println("Sistema encerrado."); break; default: System.out.println("Opção inválida"); } } }
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.