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.
– Bruno César
You are right to have no apparent doubt. I have already edited the code.
– insyspower