├── README.md ├── SimpleServer-Socket ├── .classpath ├── .project ├── .settings │ └── org.eclipse.jdt.core.prefs └── src │ └── test │ └── Sockettest │ ├── Mensaje_data.java │ └── Server.java └── Socket-Client ├── .classpath ├── .project ├── AndroidManifest.xml ├── bin ├── Socket-Client.apk ├── classes.dex └── resources.ap_ ├── default.properties ├── proguard.cfg ├── res ├── drawable-hdpi │ └── icon.png ├── drawable-ldpi │ ├── icon.png │ ├── off.png │ ├── on.png │ └── warn.png ├── drawable-mdpi │ └── icon.png ├── layout │ └── main.xml └── values │ └── strings.xml └── src └── test └── Sockettest ├── Mensaje_data.java └── Sockettest.java /README.md: -------------------------------------------------------------------------------- 1 | Sockets-en-Android-Server 2 | ========================= 3 | 4 | Codigo fuente utilizado en el Tutorial de Sockets 5 | 6 | Creado por Sebastian Cipolat Buenos Aires Argentina 7 | 8 | Tutorial disponible: 9 | http://androideity.com/2012/08/05/sockets-en-android/ 10 | -------------------------------------------------------------------------------- /SimpleServer-Socket/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /SimpleServer-Socket/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | SimpleServer-Socket 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | -------------------------------------------------------------------------------- /SimpleServer-Socket/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | #Sat May 21 18:22:58 ART 2011 2 | eclipse.preferences.version=1 3 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 4 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 5 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 6 | org.eclipse.jdt.core.compiler.compliance=1.6 7 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 8 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 9 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 10 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 11 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 12 | org.eclipse.jdt.core.compiler.source=1.6 13 | -------------------------------------------------------------------------------- /SimpleServer-Socket/src/test/Sockettest/Mensaje_data.java: -------------------------------------------------------------------------------- 1 | package test.Sockettest; 2 | 3 | import java.io.Serializable; 4 | 5 | public class Mensaje_data implements Serializable{ 6 | private static final long serialVersionUID = 9178463713495654837L; 7 | 8 | public int Action; 9 | public String texto; 10 | public boolean last_msg=false; 11 | 12 | } 13 | -------------------------------------------------------------------------------- /SimpleServer-Socket/src/test/Sockettest/Server.java: -------------------------------------------------------------------------------- 1 | package test.Sockettest; 2 | 3 | /* SERVIDOR 4 | * Creado por Sebastian Cipolat 5 | * */ 6 | 7 | import java.io.IOException; 8 | import java.io.ObjectInputStream; 9 | import java.io.ObjectOutputStream; 10 | import java.net.ServerSocket; 11 | import java.net.Socket; 12 | 13 | public class Server { 14 | Socket skCliente; 15 | ServerSocket skServidor; 16 | String datareceived, substring1, substring2; 17 | final int PUERTO = 5555;// Puerto que utilizara el servidor utilizar este 18 | // mismo en el cliente 19 | String IP_client; 20 | Mensaje_data mdata = null; 21 | ObjectOutputStream oos = null; 22 | String TimeStamp; 23 | 24 | Server() { 25 | 26 | try { 27 | System.out.println("************ SERVER ****************"); 28 | // creamos server socket 29 | skServidor = new ServerSocket(PUERTO); 30 | System.out.println("Escuchando el puerto " + PUERTO); 31 | System.out.println("En Espera...."); 32 | 33 | TimeStamp = new java.util.Date().toString(); 34 | 35 | try { 36 | // Creamos socket para manejar conexion con cliente 37 | skCliente = skServidor.accept(); // esperamos al cliente 38 | // una vez q se conecto obtenemos la ip 39 | IP_client = skCliente.getInetAddress().toString(); 40 | System.out.println("[" + TimeStamp + "] Conectado al cliente " 41 | + "IP:" + IP_client); 42 | 43 | while (true) { 44 | // Manejamos flujo de Entrada 45 | ObjectInputStream ois = new ObjectInputStream( 46 | skCliente.getInputStream()); 47 | // Cremos un Objeto con lo recibido del cliente 48 | Object aux = ois.readObject();// leemos objeto 49 | 50 | // si el objeto es una instancia de Mensaje_data 51 | if (aux instanceof Mensaje_data) { 52 | // casteamos el objeto 53 | mdata = (Mensaje_data) aux; 54 | 55 | // Analizamos el mensaje recibido 56 | // si no es el mensaje FINAL 57 | if (!mdata.last_msg) { 58 | 59 | // Es un mensaje de Accion 60 | if (mdata.Action != -1) { 61 | // exec accion 62 | Exec(mdata.Action); 63 | System.out.println("[" + TimeStamp + "] " 64 | + "Ejecutar Accion " + mdata.Action 65 | + " [" + IP_client + "]"); 66 | } else { 67 | // No es un mensaje de accion entonces es de 68 | // texto 69 | System.out.println("[" + TimeStamp + "] " 70 | + "Mensaje de [" + IP_client + "]--> " 71 | + mdata.texto); 72 | } 73 | } else {// cerramos socket 74 | skCliente.close(); 75 | ois.close(); 76 | System.out 77 | .println("[" 78 | + TimeStamp 79 | + "] Last_msg detected Conexion cerrada, gracias vuelva pronto"); 80 | break; 81 | } 82 | } else { 83 | // Si no es del tipo esperado, se marca error 84 | System.err.println("Mensaje no esperado "); 85 | } 86 | } 87 | } catch (Exception e) { 88 | e.printStackTrace(); 89 | System.out.println("[" + TimeStamp + "] Error "); 90 | } 91 | } catch (Exception e) { 92 | e.printStackTrace(); 93 | System.out.println("[" + TimeStamp + "] Error "); 94 | } 95 | } 96 | 97 | // en base al codigo de accion recibido realizaremos una accion 98 | public void Exec(int action_num) { 99 | String ACTNUM = null; 100 | String ACT1 = "vlc";// abrir VLC 101 | String ACT2 = "/opt/google/chrome/google-chrome %U";// Chrome 102 | String ACT3 = "gnome-terminal";// terminal 103 | String ACT4 = ""; 104 | 105 | try { 106 | switch (action_num) { 107 | case 1: { 108 | ACTNUM = ACT1; 109 | break; 110 | } 111 | case 2: { 112 | ACTNUM = ACT2; 113 | break; 114 | } 115 | case 3: { 116 | ACTNUM = ACT3; 117 | break; 118 | } 119 | case 4: { 120 | ACTNUM =ACT4; 121 | break; 122 | } 123 | default:{ 124 | System.out.println("EXEC Error invalid parameter:"+ACTNUM); 125 | ACTNUM=null; 126 | 127 | break; 128 | } 129 | } 130 | //Realizamos la accion 131 | Process p = Runtime.getRuntime().exec (ACTNUM); 132 | } 133 | catch (Exception e) 134 | { 135 | /* Se lanza una excepción si no se encuentra en ejecutable o el fichero no es ejecutable. */ 136 | System.out.println("EXEC Error "+e); 137 | } 138 | } 139 | public static void main(String[] args) { 140 | new Server(); 141 | } 142 | } -------------------------------------------------------------------------------- /Socket-Client/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Socket-Client/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | Socket-Client 4 | 5 | 6 | 7 | 8 | 9 | com.android.ide.eclipse.adt.ResourceManagerBuilder 10 | 11 | 12 | 13 | 14 | com.android.ide.eclipse.adt.PreCompilerBuilder 15 | 16 | 17 | 18 | 19 | org.eclipse.jdt.core.javabuilder 20 | 21 | 22 | 23 | 24 | com.android.ide.eclipse.adt.ApkBuilder 25 | 26 | 27 | 28 | 29 | 30 | com.android.ide.eclipse.adt.AndroidNature 31 | org.eclipse.jdt.core.javanature 32 | 33 | 34 | -------------------------------------------------------------------------------- /Socket-Client/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /Socket-Client/bin/Socket-Client.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Androideity/Sockets-en-Android-Server/2eecff1712fc50fc5d8dbfc2dce83010f384b8b6/Socket-Client/bin/Socket-Client.apk -------------------------------------------------------------------------------- /Socket-Client/bin/classes.dex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Androideity/Sockets-en-Android-Server/2eecff1712fc50fc5d8dbfc2dce83010f384b8b6/Socket-Client/bin/classes.dex -------------------------------------------------------------------------------- /Socket-Client/bin/resources.ap_: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Androideity/Sockets-en-Android-Server/2eecff1712fc50fc5d8dbfc2dce83010f384b8b6/Socket-Client/bin/resources.ap_ -------------------------------------------------------------------------------- /Socket-Client/default.properties: -------------------------------------------------------------------------------- 1 | # This file is automatically generated by Android Tools. 2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED! 3 | # 4 | # This file must be checked in Version Control Systems. 5 | # 6 | # To customize properties used by the Ant build system use, 7 | # "build.properties", and override values to adapt the script to your 8 | # project structure. 9 | 10 | # Project target. 11 | target=android-8 12 | -------------------------------------------------------------------------------- /Socket-Client/proguard.cfg: -------------------------------------------------------------------------------- 1 | -optimizationpasses 5 2 | -dontusemixedcaseclassnames 3 | -dontskipnonpubliclibraryclasses 4 | -dontpreverify 5 | -verbose 6 | -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* 7 | 8 | -keep public class * extends android.app.Activity 9 | -keep public class * extends android.app.Application 10 | -keep public class * extends android.app.Service 11 | -keep public class * extends android.content.BroadcastReceiver 12 | -keep public class * extends android.content.ContentProvider 13 | -keep public class com.android.vending.licensing.ILicensingService 14 | 15 | -keepclasseswithmembernames class * { 16 | native ; 17 | } 18 | 19 | -keepclasseswithmembernames class * { 20 | public (android.content.Context, android.util.AttributeSet); 21 | } 22 | 23 | -keepclasseswithmembernames class * { 24 | public (android.content.Context, android.util.AttributeSet, int); 25 | } 26 | 27 | -keepclassmembers enum * { 28 | public static **[] values(); 29 | public static ** valueOf(java.lang.String); 30 | } 31 | 32 | -keep class * implements android.os.Parcelable { 33 | public static final android.os.Parcelable$Creator *; 34 | } 35 | -------------------------------------------------------------------------------- /Socket-Client/res/drawable-hdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Androideity/Sockets-en-Android-Server/2eecff1712fc50fc5d8dbfc2dce83010f384b8b6/Socket-Client/res/drawable-hdpi/icon.png -------------------------------------------------------------------------------- /Socket-Client/res/drawable-ldpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Androideity/Sockets-en-Android-Server/2eecff1712fc50fc5d8dbfc2dce83010f384b8b6/Socket-Client/res/drawable-ldpi/icon.png -------------------------------------------------------------------------------- /Socket-Client/res/drawable-ldpi/off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Androideity/Sockets-en-Android-Server/2eecff1712fc50fc5d8dbfc2dce83010f384b8b6/Socket-Client/res/drawable-ldpi/off.png -------------------------------------------------------------------------------- /Socket-Client/res/drawable-ldpi/on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Androideity/Sockets-en-Android-Server/2eecff1712fc50fc5d8dbfc2dce83010f384b8b6/Socket-Client/res/drawable-ldpi/on.png -------------------------------------------------------------------------------- /Socket-Client/res/drawable-ldpi/warn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Androideity/Sockets-en-Android-Server/2eecff1712fc50fc5d8dbfc2dce83010f384b8b6/Socket-Client/res/drawable-ldpi/warn.png -------------------------------------------------------------------------------- /Socket-Client/res/drawable-mdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Androideity/Sockets-en-Android-Server/2eecff1712fc50fc5d8dbfc2dce83010f384b8b6/Socket-Client/res/drawable-mdpi/icon.png -------------------------------------------------------------------------------- /Socket-Client/res/layout/main.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 15 | 16 | 17 | 26 | 27 | 28 | 35 | 36 | 45 | 46 | 51 | 52 | 53 | 54 | 61 | 62 | 70 | 71 | 76 | 77 | 78 | 79 | 80 | 86 | 87 |