public class ClientSocket {
// Private members
private Socket socket;
private String error;
private int port;
private String host;
private BufferedReader entrada;
private PrintWriter salida;
// Public methods
public void SetHost(String _host){
host = _host;
}
public void SetPort(int _port){
port = _port;
}
public String getError(){
return error;
}
//Connect method
public boolean Connect() {
System.out.println("Iniciando el socket");
try{
socket = new Socket (host, port);
entrada = new BufferedReader (new InputStreamReader(socket.getInputStream()));
salida = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()),true);
return true;
}
catch(Exception e )
{
error = "Error: " + e.getMessage();
System.out.println("Error: "+e.getMessage());
return false;
}
}
public void Disconnect() {
try {
socket.close();
} catch (IOException ex) {
error = "Error: " + ex.getMessage();
System.out.println("Error: " + ex.getMessage());
}
}
public boolean SendCommand(String _id, int[] _args, int _num_arg )
{
String query = _id + " ";
if(_id.equals("setangle"))
{
float angle = (float) ((double)_args[3]*3.1416/180);
if(_args != null){
for (int i = 0; i < (_num_arg-1); i++) {
query = query + _args[i] + " ";
}
}
query = query + angle + " ";
}
else
{
if(_args != null){
for (int i = 0; i < _num_arg; i++) {
query = query + _args[i] + " ";
}
}
}
query = query.substring(0, query.length() - 1);
System.out.println("Sending... " + query);
try {
salida.println(query);
System.out.println(entrada.readLine());
return true;
} catch (IOException ex) {
error = "Error: " + ex.getMessage();
System.out.println("Error: "+ex.getMessage());
return false;
}
}
public boolean SendCommand(String _id)
{
String query = _id;
System.out.println("Sending... " + query);
try {
salida.println(query);
System.out.println(entrada.readLine());
return true;
} catch (IOException ex) {
error = "Error: " + ex.getMessage();
System.out.println("Error: "+ex.getMessage());
return false;
}
}
}
Na classe deve-se configurar primeiro o host (host) e o número da porta de conexão (port) por meio dos métodos SetHost e SetPort.
A conexão com o servidor é realizada utilizando a função Connect(). Ela retorna um valor booleano: se a conexão foi correta retorna true se ocorreu algum erro, retorna false.
Os comandos ao servidor são enviados através da função SendCommand(...) que está sobrecarregada para permitir enviar comandos que não precisam de parâmetros.