Controles de Internet

La pestania Internet proporciona 9 controles para navegacion web, redes HTTP/FTP, correo electronico, comunicacion WebSocket y programacion de sockets TCP/UDP. Todos los controles son multiplataforma y utilizan E/S sin bloqueo internamente.

TWebView CT_WEBVIEW = 62

Incrusta un navegador web completo dentro de un formulario. Renderiza contenido HTML o navega a URL usando el motor web nativo de la plataforma.

PropiedadTipoValor predet.Descripcion
cURLString""URL a la que navegar
cHTMLString""Contenido HTML sin procesar a renderizar
lCanGoBackLogico.F.Si el historial de navegacion permite retroceder (solo lectura)
lCanGoForwardLogico.F.Si el historial de navegacion permite avanzar (solo lectura)
cTitleString""Titulo de la pagina (solo lectura)
EventoCategoriaDescripcion
OnNavigateNavegacionSe dispara antes de navegar a una nueva URL. Devuelva .F. para cancelar
OnLoadNavegacionPagina termino de cargar
OnErrorErrorError de navegacion o renderizado ocurrido
PlataformaWidget Nativo
WindowsWebView2 (Edge basado en Chromium)
macOSWKWebView (WebKit)
LinuxWebKitGTK (WebKit2)

TWebServer CT_WEBSERVER = 71

Servidor HTTP/HTTPS embebido. Permite que su aplicacion sirva paginas web, APIs REST, o actue como un punto de servicio local.

PropiedadTipoValor predet.Descripcion
nPortNumerico8080Numero de puerto de escucha
cHostString"0.0.0.0"Direccion de enlace
cDocumentRootString""Directorio raiz para archivos estaticos
lSSLLogico.F.Habilitar HTTPS
cCertFileString""Ruta al archivo de certificado SSL
cKeyFileString""Ruta al archivo de clave privada SSL
nMaxConnectionsNumerico256Maximo de conexiones simultaneas
EventoCategoriaDescripcion
OnRequestAccionSolicitud HTTP recibida. Parametros: oRequest, oResponse
OnConnectConexionNuevo cliente conectado
OnDisconnectConexionCliente desconectado
OnStartCiclo de vidaServidor comenzo a escuchar
OnStopCiclo de vidaServidor detenido
OnErrorErrorError del servidor ocurrido

TWebSocket CT_WEBSOCKET = 72

Cliente WebSocket para comunicacion bidireccional en tiempo real con un servidor.

PropiedadTipoValor predet.Descripcion
cURLString""URL del servidor WebSocket (ws:// o wss://)
cProtocolString""Subprotocolo a negociar
lAutoReconnectLogico.F.Reconectar automaticamente al desconectarse
nReconnectDelayNumerico3000Retraso en ms antes del intento de reconexion
EventoCategoriaDescripcion
OnOpenConexionConexion establecida
OnMessageDatosMensaje recibido del servidor
OnCloseConexionConexion cerrada
OnErrorErrorError de conexion o protocolo

THttpClient CT_HTTPCLIENT = 73

Cliente HTTP para realizar llamadas a API REST, descargar archivos y comunicacion HTTP general.

PropiedadTipoValor predet.Descripcion
cURLString""URL de la solicitud
cMethodString"GET"Metodo HTTP (GET, POST, PUT, DELETE, PATCH)
aHeadersArray{}Encabezados de solicitud como pares clave-valor
cBodyString""Contenido del cuerpo de la solicitud
nTimeoutNumerico30000Tiempo de espera de solicitud en milisegundos
nStatusCodeNumerico0Codigo de estado de respuesta (solo lectura)
EventoCategoriaDescripcion
OnResponseDatosRespuesta recibida. Parametros: nStatus, cBody, aHeaders
OnProgressDatosProgreso de descarga/subida. Parametros: nCurrent, nTotal
OnErrorErrorSolicitud fallida

TFtpClient CT_FTPCLIENT = 74

Cliente FTP/FTPS para operaciones de transferencia de archivos.

PropiedadTipoValor predet.Descripcion
cHostString""Nombre de host del servidor FTP
nPortNumerico21Puerto del servidor
cUserString""Nombre de usuario de inicio de sesion
cPasswordString""Contrasena de inicio de sesion
lPassiveModeLogico.T.Usar modo pasivo para transferencias de datos
lSSLLogico.F.Usar FTPS (FTP sobre TLS)
EventoCategoriaDescripcion
OnConnectConexionConectado exitosamente al servidor
OnTransferDatosProgreso de transferencia de archivos. Parametros: cFile, nBytes, nTotal
OnErrorErrorError de conexion o transferencia

TSmtpClient CT_SMTPCLIENT = 75

Cliente SMTP para enviar mensajes de correo electronico con archivos adjuntos.

PropiedadTipoValor predet.Descripcion
cHostString""Nombre de host del servidor SMTP
nPortNumerico587Puerto del servidor (25, 465, o 587)
lSSLLogico.T.Usar cifrado TLS/SSL
cUserString""Nombre de usuario de autenticacion
cPasswordString""Contrasena de autenticacion
cFromString""Direccion de correo del remitente
cToString""Direccion(es) de correo del destinatario, separadas por comas
cSubjectString""Linea de asunto del correo
cBodyString""Contenido del cuerpo del correo
EventoCategoriaDescripcion
OnSendAccionCorreo enviado exitosamente
OnErrorErrorError de envio o conexion

TTcpServer CT_TCPSERVER = 76

Servidor de sockets TCP. Escucha conexiones entrantes y gestiona multiples clientes.

PropiedadTipoValor predet.Descripcion
nPortNumerico0Puerto de escucha
cHostString"0.0.0.0"Direccion de enlace
nMaxConnectionsNumerico128Maximo de conexiones simultaneas
lActiveLogico.F.El servidor esta escuchando actualmente (solo lectura)
EventoCategoriaDescripcion
OnAcceptConexionNueva conexion de cliente aceptada. Parametros: oClient
OnReceiveDatosDatos recibidos del cliente. Parametros: oClient, cData
OnDisconnectConexionCliente desconectado. Parametros: oClient

TTcpClient CT_TCPCLIENT = 77

Cliente de socket TCP. Se conecta a un servidor remoto para comunicacion basada en flujo.

PropiedadTipoValor predet.Descripcion
cHostString""Nombre de host o IP del servidor remoto
nPortNumerico0Puerto del servidor remoto
nTimeoutNumerico10000Tiempo de espera de conexion en milisegundos
lConnectedLogico.F.Estado de conexion (solo lectura)
EventoCategoriaDescripcion
OnConnectConexionConectado exitosamente al servidor
OnReceiveDatosDatos recibidos del servidor. Parametros: cData
OnDisconnectConexionDesconectado del servidor

TUdpSocket CT_UDPSOCKET = 78

Socket de datagramas UDP para comunicacion sin conexion y de baja latencia.

PropiedadTipoValor predet.Descripcion
nPortNumerico0Puerto local al que vincular
lBroadcastLogico.F.Habilitar modo de difusion (broadcast)
cHostString"0.0.0.0"Direccion de enlace
EventoCategoriaDescripcion
OnReceiveDatosDatagrama recibido. Parametros: cData, cSenderIP, nSenderPort

Ejemplo de Codigo: Servidor Web Simple

// Un servidor web simple que responde a solicitudes HTTP

FUNCTION Main()

   LOCAL oServer

   oServer := TWebServer():New()
   oServer:nPort := 8080
   oServer:cDocumentRoot := "./public"

   oServer:OnRequest := { |oReq, oRes| HandleRequest( oReq, oRes ) }
   oServer:OnStart   := { || QOut( "Servidor corriendo en puerto 8080" ) }
   oServer:OnError   := { |e| QOut( "Error: " + e:Description ) }

   oServer:Start()

   // Mantener la aplicacion en ejecucion
   WAIT "Presione cualquier tecla para detener..."

   oServer:Stop()

RETURN NIL

FUNCTION HandleRequest( oReq, oRes )

   DO CASE
      CASE oReq:cPath == "/api/hello"
         oRes:cContentType := "application/json"
         oRes:cBody := '{"message": "Hola desde HarbourBuilder!"}'

      CASE oReq:cPath == "/api/time"
         oRes:cContentType := "application/json"
         oRes:cBody := '{"time": "' + Time() + '"}'

      OTHERWISE
         oRes:nStatus := 404
         oRes:cBody := "No Encontrado"
   ENDCASE

RETURN NIL
9 Controles de Internet

Todos los controles de Internet utilizan E/S asincrona basada en eventos. Las operaciones de red nunca bloquean el hilo de la interfaz de usuario. TLS/SSL es compatible en todas las plataformas usando el almacen de certificados nativo del sistema.

En Esta Página

TWebView CT_WEBVIEW = 62 TWebServer CT_WEBSERVER = 71 TWebSocket CT_WEBSOCKET = 72 THttpClient CT_HTTPCLIENT = 73 TFtpClient CT_FTPCLIENT = 74 TSmtpClient CT_SMTPCLIENT = 75 TTcpServer CT_TCPSERVER = 76 TTcpClient CT_TCPCLIENT = 77 TUdpSocket CT_UDPSOCKET = 78 Ejemplo de Codigo: Servidor Web Simple