Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8735843
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 13, 20262026-06-13T10:09:53+00:00 2026-06-13T10:09:53+00:00

I have this code. I want to exit my Java Application if it detects

  • 0

I have this code. I want to exit my Java Application if it detects that the computer is shutting down. I have this problem, If shutdown is clicked on windows my java application disconnects from android app connection. I want to display that the java application has been disconnected or it will exit.

//  Copyright 2012
//  Android Remote Desktop Server Ver. 1.0


import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.util.Random;

public class ServerWindow implements ActionListener{

    private RemoteDataServer server;

    private Thread sThread; //server thread

    private static final int WINDOW_HEIGHT = 200;
    private static final int WINDOW_WIDTH = 350;

    private String ipAddress;

    private JFrame window = new JFrame("Remote Control for Android");

    private JLabel addressLabel = new JLabel("");
    private JLabel portLabel = new JLabel("Android Remote Control Port: ");
    private JTextArea[] buffers = new JTextArea[3];
    private JTextField portTxt = new JTextField(5);
    private JLabel serverMessages = new JLabel("Not Connected");

    private JButton connectButton = new JButton("Start Server");
    private JButton disconnectButton = new JButton("Stop Server");

    public boolean connected = false;




    //@SuppressWarnings("deprecation")
    public ServerWindow(){
        server = new RemoteDataServer();

        window.setSize(WINDOW_WIDTH, WINDOW_HEIGHT);
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        connectButton.addActionListener(this);
        disconnectButton.addActionListener(this);

        Container c = window.getContentPane();
        c.setLayout(new FlowLayout());

        try{
            InetAddress ip = InetAddress.getLocalHost();
            ipAddress = ip.getHostAddress();
            addressLabel.setText("Android Remote Control Server IP Address: "+ipAddress);
        }
        catch(Exception e){addressLabel.setText("IP Address Could Not be Resolved");}

        int x;
        for(x = 0; x < 3; x++){
            buffers[x] = new JTextArea("", 1, 30);
            buffers[x].setEditable(false);
            buffers[x].setBackground(window.getBackground());
        }

        portTxt.setEditable(false);
        Random portRandom = new Random();
        for (int i = 0; i < 10; i++) {

          int port = portRandom.nextInt(4998) + 1;
          int portNum = 5000+port;
          String portString = Integer.toString(portNum);
          portTxt.setText(portString);
          }

        c.add(addressLabel);
        c.add(buffers[0]);
        c.add(portLabel);
        //portTxt.setText("5444");
        c.add(portTxt);
        c.add(buffers[1]);
        c.add(connectButton);
        c.add(disconnectButton);
        c.add(buffers[2]);
        c.add(serverMessages);

        window.setLocationRelativeTo(null);
        window.setVisible(true);
        window.setResizable(false);

    }


    public void actionPerformed(ActionEvent e){
        Object src = e.getSource();

        if(src instanceof JButton){
            if((JButton)src == connectButton){
                int port = Integer.parseInt(portTxt.getText());
                runServer(port);
            }

            else if((JButton)src == disconnectButton){
                closeServer();
            }
        }
    }

    public void runServer(int port){
        if(port <= 9999){
            server.setPort(port);
            sThread = new Thread(server);
            sThread.start();
        }
        else{
            serverMessages.setText("The port Number must be less than 10000");
        }
    }

    public void closeServer(){
        serverMessages.setText("Disconnected");
        server.shutdown();
        connectButton.setEnabled(true);
    }

    public static void main(String[] args){
        new ServerWindow();
    }

    public class RemoteDataServer implements Runnable{
        int PORT;
        private DatagramSocket server;
        private byte[] buf;
        private DatagramPacket dgp;

        private String message;
        private AutoBot bot;

        public RemoteDataServer(int port){
            PORT = port;
            buf = new byte[1000];
            dgp = new DatagramPacket(buf, buf.length);
            bot = new AutoBot();
            serverMessages.setText("Not Connected");
        }

        public RemoteDataServer(){
            buf = new byte[1000];
            dgp = new DatagramPacket(buf, buf.length);
            bot = new AutoBot();
            serverMessages.setText("Not Connected");
        }

        public String getIpAddress(){
            String returnStr;
            try{
                    InetAddress ip = InetAddress.getLocalHost();
                    returnStr = ip.getCanonicalHostName();
            }
            catch(Exception e){ returnStr = new String("Could Not be Resolve Ip Address");}
            return returnStr;
        }

        public void setPort(int port){
            PORT = port;
        }

        public void shutdown(){
            try{server.close();
                serverMessages.setText("Disconnected");}
            catch(Exception e){}
        }
        public void run(){
            //boolean connected = false;
            try {InetAddress ip = InetAddress.getLocalHost(); 
                serverMessages.setText("Waiting for connection on " + ip.getCanonicalHostName());

                server = new DatagramSocket(PORT, ip);

                connected = true;
                connectButton.setEnabled(false);
            }
            catch(BindException e){ serverMessages.setText("Port "+PORT+" is already in use. Use a different Port"); }
            catch(Exception e){serverMessages.setText("Unable to connect");}

            while(connected){
                //Runtime.getRuntime().exit(0);
                // get message from sender
                try{ server.receive(dgp);

                    // translate and use the message to automate the desktop
                    message = new String(dgp.getData(), 0, dgp.getLength());
                    if (message.equals("Connectivity")){
                        //send response to confirm connectivity
                        serverMessages.setText("Trying to Connect");
                        server.send(dgp); //echo the message back
                    }else if(message.equals("Connected")){
                        server.send(dgp); //echo the message back
                    }else if(message.equals("Close")){
                        serverMessages.setText("Controller has Disconnected. Trying to reconnect."); //echo the message back
                    }else{
                        serverMessages.setText("Android Phone Connected to ARD Server");
                        bot.handleMessage(message);
                    }
                }catch(Exception e){
                    serverMessages.setText("Disconnected");
                    connected = false;}
            }

        }
    }
}
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-13T10:09:54+00:00Added an answer on June 13, 2026 at 10:09 am

    Assuming that the question you meant to ask is “how to detect when Windows is being shut down”, here is how you do it:

    You need a so-called “System Shutdown Hook”, which is essentially a Thread who’s run() method is executed whenever the Java virtual machine shuts down. The happens either when your program terminates or because of a system-wide event, such as a user log-off or a shut-down.

    All you need to do is put this piece of code somewhere in the startup process of your program:

    Runtime.getRuntime().addShutdownHook(
        new Thread(new Runnable() {
            @Override
            public void run() {
                // this is executed on shut-down. put whatever.
            }
        }));
    

    I hope this answers your question.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have this code that I want to make point-free; (\k t -> chr
I have this html code that i want to edit with jQuery. Here is
I have this code down here. When format.js fires I want to serve to
I have a code in java that connects with postgreSQL database. now, I want
I have a small problem. My Java application holds some native resources. I want
I have this code and I want to have my button as a square,
Hi can you help me with this?? I have this code and i want
i have this code and its working but i want it to return dailyTotals
I have this code in my controller and want to test this code line
I have this code , and I want to run Log.d every 1000 milis

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.