|     Inicio    |   |         |  |   FOROS      |  |      |      
   Elastix - VoIP B4A (Basic4Android) App inventor 2 PHP - MySQL
  Estación meteorológica B4J (Basic4Java) ADB Shell - Android Arduino
   AutoIt (Programación) Visual Basic Script (VBS) FireBase (BD autoactualizable) NodeMCU como Arduino
  Teleco - Emisora de A.M. Visual Basic Cosas de Windows Webs interesantes
Translate:
Búsqueda en este sitio:


Nuevo concurso para España, Argentina, Brasil, Chile, Colombia, Ecuador, México, Perú y Portugal.

B4A en español - Juan Antonio Villalpando
(BASIC4Android)

-- Tutorial de B4A --

Volver al índice del tutorial

____________________________

70.- Servidor web.

- B4a dispone de una biblioteca llamada HttpServer para poder convertir a nuestro disposivo en un servidor web.

- Podemos ver un tutorial y bajar la biblioteca desde la web oficial.

- La biblioteca consta de dos archivos: HttpServer.jar y HttpServer.xml que debemos copiar en la carpeta donde tenemos instalado el programa, en mi caso C:\Archivos de programa\Anywhere Software\Basic4android\Libraries

- Luego debemos activar la librería HttpServer en la pestaña Libs (abajo-derecha del IDE)

- También debemos establecer un puerto mayor que el 1024, en el ejemplo he puesto el 3333

- Un vez en funcionamiento, desde otro dispositivo debemos entrar en su navegador y escribir la IP del servidor y el puerto,
por ejemplo: 192.168.1.4:3333 (esto suponiendo que hemos instalado el servidor web en nuestro móvil y queremos verlo funcionar desde otro dispositivo de nuestra red local, suponiendo que la ip local del móvil es 192.168.1.4 y que estamos trabajando con wifi)

- Si queremos ver como funciona nuestro servidor web instalado en nuestro emulador, desde el mismo emulador escribiremos en el Navegador del emulador

10.0.2.15:3333

 

- Es conveniente que nuestro servidor web funcione como Servicio, es decir, lo lanzamos mediante una aplicación y aunque ésta pase a segundo plano, nuestro servidor seguirá funcionando.

_______________
- Código.

Copia y pega este código en un nuevo proyecto
#Region Module Attributes
    #FullScreen: False
    #IncludeTitle: True
    #ApplicationLabel: Servidor Web
    #VersionCode: 1
    #VersionName: 
    #SupportedOrientations: unspecified
    #CanInstallToExternalStorage: False
#End Region

Sub Process_Globals

End Sub

Sub Globals
    Dim boton As Button
End Sub

Sub Activity_Create(FirstTime As Boolean)
    ' Crea Botón (Button)
    boton.Initialize("boton")
    boton.TextColor = Colors.Red
    boton.Text = "Arrancar el servidor"
    Activity.AddView(boton, 0dip, 10dip, 100%x, 10%y)
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

Sub boton_Click
    StartService(servicio)
  ' StopService(servicio)
End Sub

Ahora debemos crear el servicio, para ello pulsamos en...

Project / Add New Module / Service Module

y lo llamamos servicio.

Copia y pega este código en el módulo servicio
#Region Module Attributes
    #StartAtBoot: False
#End Region

Sub Process_Globals
    Private server As HttpServer
    Public port As Int = 3333
    ' Dim ip As String
End Sub
Sub Service_Create
    server.Initialize("Server")
    server.Start(port)
    ' Notificación
    Dim n As Notification
    n.Initialize
    n.Icon = "icon"
    n.SetInfo("Servidor web funcionando", "", Main)
    Service.StartForeground(1, n)
End Sub

Sub Service_Start (StartingIntent As Intent)
    
End Sub

Sub Service_Destroy
'    server.Stop
'    Service.StopForeground(1)
End Sub

Sub Server_HandleRequest(Request As ServletRequest, Response As ServletResponse)
  ' Aquí se realiza la petición, podemos enviar un mensaje, una redirección, un archivo...
  '  Response.SendString("Hola, soy el servidor web.")
  '  Response.SendRedirect("http://www.kio4.com")
  '  ip = Request.RemoteAddress
  '  Response.SendString("IP = " & ip)
     Response.SendFile(File.DirAssets, "index_web.htm")
End Sub

- En la carpeta Files del proyecto guarda el siguiente archivo: index_web.htm. (botón derecho copiar)

- Ejecutamos nuestra aplicación, pulsamos el botón para activar el Servicio web. Observamos que sale una notificación.
- Vamos a la pantalla de inicio. Ejecutamos el Navegador web. Escribimos en dirección: 10.0.2.15:3333 y cuando el servidor reciba esta llamada nos responderá con la subrutina Server_HandleRequest que enviará el archivo index_web.htm que se encuentra en la carpeta Files.

- Como dije antes si lo queremos probar en un móvil real y mediante wifi en una red local, debemos saber qué IP tiene asignada el móvil, por ejemplo 192.168.1.4:3333 y desde otro dispositivo, ordenador con wifi,... entrar en el servidor web del móvil.

_______________________________________
- ¿Cómo podemos saber la IP del emulador?

Eso ya lo vimos en el tutorial dedicado a LINUX.

En Windows, vamos al Símbolo de sistema, paro ello escribimos cmd en "Buscar programas y archivos" del botón de inicio.

Luego vamos a la carpeta donde hemos instalado el SDK.

cd C:\Android\android-sdk\platform-tools

y escribimos

adb -s emulator-5554 shell ifconfig eth0

donde 5554 es el número del emulador.

Debe salir algo así:

C:\Android\android-sdk\platform-tools>adb -s emulator-5554 shell ifconfig eth0

eth0: ip 10.0.2.15 mask 255.255.255.0 flags [up broadcast running multicast]

La IP del emulador es 10.2.0.15

Para entrar en nuestro servidor web debemos entrar en el navegador y escribir:

10.2.0.15:3333


_______________________________________________
- Otro ejemplo más completo del servidor web

- De los foros podemos bajar el ejemplo: HttpServerExample.zip,

- Lo bajamos y lo ejecutamos...

- Pulsamos el botón de Start Server y ya tenemos el servidor en funcionamiento. Lo podemos confirmar mirando el Log.

- Vamos a la pantalla de inicio. Ejecutamos el Navegador Web y escribimos la dirección:

10.0.2.15:5555

(esta vez el puerto es el 5555, si lo probamos en un móvil real en wifi pondremos su IP 192.168.1.4:5555)

En el casillero Greeting podemos escribir un mensaje que luego lo podemos ver en la línea Greeting, cuando veamos la página de inicio.

Aqui vemos la página de inicio, en Greeting saldrá el mensaje escrito en el casillero al Arrancar el servidor.

- Si pulsamos en

List external storage files

Nos saldrá un listado de los archivos y directorios que tienes en la SdCard y un botón para subir archivos al servidor.

- Si estamos en una red local, por ejemplo en nuestra casa, en vez de poner la IP del emulador (10.0.2.15), tendremos que poner la IP que nuestro Wifi le ha asignado a nuestro teléfono móvil. por ejemplo 192.168.1.6.

- Desde cualquier ordenador de nuestra red local podemos conectarnos a este servidor web instalado en nuestro teléfono móvil.

- Si queremos personalizar una página web, la pondremos en nuestra carpeta Files del proyecto.

Si te sale este error: Address already in use, significa que ya hay un servidor trabajando en esa dirección IP.
Puedes parar ese servidor o simplemente vas al código y cambia el puerto... en mi caso lo he cambiado a 5556.

________________________________________
- Parar un servicio, desinstalar un programa.

En el programa que lanza el servicio podemos poner un botón de parada de Servicio.

Sub boton_parar_Click
StopService(servicio)
End Sub

También podemos parar un servicio pulsando en los iconos de...

Settings (Configuración) / Applications / y

luego en Running services o en Manage applications para desinstalarlo.

 

También podemos poner un código de parada en el icono de notificación.


____________________
- Otros ejemplos.

En la misma página del foro encontramos dos ejemplos más de servidor web...

HttpServer_Chat.zip

HttpServerDB.zip

 

- Nuestro servidor web que hemos instalado en el móvil solo funciona en red local, pero podemos darnos de alta en no-ip.com para que se puedan conectar a nuestro servidor desde cualquier parte de internet, siguendo lo que se indica en este tutorial.

________________________________

- Mi correo:
juana1991@yahoo.com
- KIO4.COM - Política de cookies. Textos e imágenes propiedad del autor:
© Juan A. Villalpando
No se permite la copia de información ni imágenes.
Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación y realizan análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. Acepto    Más información