How to pass arguments when running a program through Netbeans?

Asked

Viewed 2,473 times

2

This code in notepadd ++ worked because on the command line it added the example port 5000,6000 etc. But in netbeans you can’t do that. That’s why I have here the client and server code. Message exchange,

Clientetcp.java:

import java.io.*;
import java.net.*;

public class ClienteTCP {

   public static void main(String argv[]) 
    {
        try 
        {
            // criação do socket TCP de ligação ao servidor, o 1º argumento
            // é o nome da máquina, o 2º é o número do porto
            Socket sd = new Socket(InetAddress.getByName(argv[0]),(new Integer(argv[1])).intValue());
            // obtenção dos canais de leitura e escrita do socket
            InputStream in = sd.getInputStream();
            OutputStream out = sd.getOutputStream();
            // criação do buffer para envio e recepção de informação
            byte[] buffer = new byte[1024];
            for (;;) {
            // pede a mensagem ao utilizador
            System.out.print("Introduza a mensagem: ");
            System.out.flush();
            int length = System.in.read(buffer);
            // envia ao servidor o buffer através do outputstream
            out.write(buffer, 0, length);
            out.flush();
            // se premiu return, fecho da ligação
            if (length == 1) break;
            // leitura da mensagem ecoada pelo servidor
            length = in.read(buffer);
            System.out.println(new String(buffer,0,0,length));
            }
        } catch (IOException e) 
        {
            // Surgiu algum problema com a ligação ao socket
            System.out.println(e.toString());
        }
        System.out.println("ligação fechada");
    }
}

Servorsimples.java:

import java.io.*;
import java.net.*;

public class ServidorSimples {

    /**
     * @param argv the command line arguments
     */
    public static void main(String argv[]) 
    {

        // obtem o número do porto da linha de comandos. Se não for especificado 
        // um porto o sistema operativo vai escolher automaticamenteum (porto 0)
        int listenPort= (argv.length == 0) ? 0 : (new Integer(argv[0])).intValue();
        ServerSocket SocketEscuta= null;
        InputStream in= null; 
        OutputStream out= null;
        Socket s= null; 
        try 
        {
            SocketEscuta = new ServerSocket(listenPort);
            s = SocketEscuta.accept();
            System.out.println("Ligação estabelecida"); 
            // criação do buffer para receber informação
            byte[] buffer = new byte[1024];
            // obtenção dos canais de leitura e escrita para o novo
            // socket estabelecido
            in = s.getInputStream(); 
            out = s.getOutputStream();
            for (;;) 
            { 
                // Leitura da informação do socket
                int length = in.read(buffer);
                // se apenas return foi lido, fecha a ligação 
                if (length == 1) break;
                // escreve a mensagem no ecrã e devolve-a ao cliente
                System.out.println(new String(buffer,0,0,length));
                out.write(buffer,0,length);
            }
        } catch (IOException e) 
        { 
            // Ocorreu algum problema na recepção ou envio de informação
            System.out.println(e.toString());
        }
        System.out.println("Ligação fechada"); 
    }

}

My question is running the program in netbeans Gives error in this line: Socket sd = new Socket(Inetaddress.getByName(argv[0]),(new Integer(argv[1])). intValue());

it seems that in netbeans you do not allow choosing the port.

In the notepadd++: javac Servidorsimples.java java Servorsimples 1234

New client window: java Clientetcp localhost 1234

And it works!

but wanted netbeans to allow choosing the port type this: Connection = new Socket(Inetaddress.getByName("localhost"), 5320 );

or this server = new Serversocket(5320,2);

but change so that it works in the client code line 12:

Here is a link with similar doubt: https://stackoverflow.com/questions/762205/why-am-i-getting-an-error-when-i-try-to-run-my-socket-program-in-java My code’s a little different anyway. But the line is the same.

  • And what is your question? Any mistakes? Explain your need better, format your question too.

  • You are right to have no apparent doubt. I have already edited the code.

2 answers

3

To run your Netbeans file passing arguments you will need to install this plugin Run With Arguments.

Example (after installed):

inserir a descrição da imagem aqui

-

inserir a descrição da imagem aqui

public static void main(String[] argv) {
    System.out.println(argv[0]);
    System.out.println(argv[1]);
}

Exit:

arg1

arg2

-

Other than that you will have to either fix the values in the code (hardcode) or rotate by cmd passing the arguments.

  • It works! It helped a lot.

1

Just right click on the project and then choose Estates.

projeto

In the next window, in the tab Execute you can enter the initialization arguments:

propriedades

public class Main {
    public static void main(String... args) {
        System.out.println(Arrays.toString(args)); // [foo, bar, baz] 
    }
}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.