- package tutorial.android;
- import java.net.InetSocketAddress;
- import java.net.Socket;
- import java.net.SocketAddress;
- import java.io.DataOutputStream;
- import java.io.DataInputStream;
- import android.util.Log;
- public class Conexion {
- private static Conexion instance;
- private SocketAddress direccion;
- private Socket socket;
- private DataOutputStream salida;
- public DataInputStream entrada;
- public boolean estoy_conectado = false;
- public static Conexion getInstance() {
- // La clase Conexion funciona como un Singleton
- if(instance == null) {
- instance = new Conexion();
- }
- return instance;
- }
- public boolean conectar(String ip, int puerto) {
- // Esta función se encarga de conectarse con el servidor
- // si logro conectarme seteo la variable estoy_conectado a true
- // sino en false
- // Seteo un timeout de conexión en 30 segundos
- try {
- direccion = new InetSocketAddress(ip, puerto);
- socket = new Socket();
- socket.connect(direccion, 30000);
- salida = new DataOutputStream(socket.getOutputStream());
- entrada = new DataInputStream(socket.getInputStream());
- estoy_conectado = true;
- return true;
- } catch(Exception e) {
- estoy_conectado = false;
- Log.v("CONECTAR", "error al conectar");
- return false;
- }
- }
- public boolean enviar(String mensaje) {
- // Esta función se encarga de enviar un mensaje al servidor
- try {
- mensaje = mensaje + "\r\n";
- salida.writeBytes(mensaje);
- salida.flush();
- return true;
- } catch(Exception e) {
- estoy_conectado = false;
- Log.v("ENVIAR", "Error al enviar un mensaje al servidor");
- return false;
- }
- }
- public String recibir() {
- // Esta función se encarga de recibir los mensajes que envía el servidor
- String mensaje = "";
- try {
- int c = 0;
- StringBuffer sb = new StringBuffer();
- while(((c = entrada.read()) != '\n' && (c != -1))) {
- sb.append((char)c);
- }
- mensaje = sb.toString();
- } catch(Exception e) {
- estoy_conectado = false;
- Log.v("RECIBIR", "error al recibir un mensaje");
- }
- return mensaje;
- }
- public void desconectar() {
- // Esta función se encarga de cerrar la conexión
- try {
- entrada.close();
- salida.close();
- socket.close();
- estoy_conectado = false;
- } catch(Exception e) {
- estoy_conectado = false;
- Log.v("DESCONECTAR", "error al desconectar");
- }
- }
- }