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.
| Propiedad | Tipo | Valor predet. | Descripcion |
cURL | String | "" | URL a la que navegar |
cHTML | String | "" | Contenido HTML sin procesar a renderizar |
lCanGoBack | Logico | .F. | Si el historial de navegacion permite retroceder (solo lectura) |
lCanGoForward | Logico | .F. | Si el historial de navegacion permite avanzar (solo lectura) |
cTitle | String | "" | Titulo de la pagina (solo lectura) |
| Evento | Categoria | Descripcion |
OnNavigate | Navegacion | Se dispara antes de navegar a una nueva URL. Devuelva .F. para cancelar |
OnLoad | Navegacion | Pagina termino de cargar |
OnError | Error | Error de navegacion o renderizado ocurrido |
| Plataforma | Widget Nativo |
| Windows | WebView2 (Edge basado en Chromium) |
| macOS | WKWebView (WebKit) |
| Linux | WebKitGTK (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.
| Propiedad | Tipo | Valor predet. | Descripcion |
nPort | Numerico | 8080 | Numero de puerto de escucha |
cHost | String | "0.0.0.0" | Direccion de enlace |
cDocumentRoot | String | "" | Directorio raiz para archivos estaticos |
lSSL | Logico | .F. | Habilitar HTTPS |
cCertFile | String | "" | Ruta al archivo de certificado SSL |
cKeyFile | String | "" | Ruta al archivo de clave privada SSL |
nMaxConnections | Numerico | 256 | Maximo de conexiones simultaneas |
| Evento | Categoria | Descripcion |
OnRequest | Accion | Solicitud HTTP recibida. Parametros: oRequest, oResponse |
OnConnect | Conexion | Nuevo cliente conectado |
OnDisconnect | Conexion | Cliente desconectado |
OnStart | Ciclo de vida | Servidor comenzo a escuchar |
OnStop | Ciclo de vida | Servidor detenido |
OnError | Error | Error del servidor ocurrido |
TWebSocket CT_WEBSOCKET = 72
Cliente WebSocket para comunicacion bidireccional en tiempo real con un servidor.
| Propiedad | Tipo | Valor predet. | Descripcion |
cURL | String | "" | URL del servidor WebSocket (ws:// o wss://) |
cProtocol | String | "" | Subprotocolo a negociar |
lAutoReconnect | Logico | .F. | Reconectar automaticamente al desconectarse |
nReconnectDelay | Numerico | 3000 | Retraso en ms antes del intento de reconexion |
| Evento | Categoria | Descripcion |
OnOpen | Conexion | Conexion establecida |
OnMessage | Datos | Mensaje recibido del servidor |
OnClose | Conexion | Conexion cerrada |
OnError | Error | Error de conexion o protocolo |
THttpClient CT_HTTPCLIENT = 73
Cliente HTTP para realizar llamadas a API REST, descargar archivos y comunicacion HTTP general.
| Propiedad | Tipo | Valor predet. | Descripcion |
cURL | String | "" | URL de la solicitud |
cMethod | String | "GET" | Metodo HTTP (GET, POST, PUT, DELETE, PATCH) |
aHeaders | Array | {} | Encabezados de solicitud como pares clave-valor |
cBody | String | "" | Contenido del cuerpo de la solicitud |
nTimeout | Numerico | 30000 | Tiempo de espera de solicitud en milisegundos |
nStatusCode | Numerico | 0 | Codigo de estado de respuesta (solo lectura) |
| Evento | Categoria | Descripcion |
OnResponse | Datos | Respuesta recibida. Parametros: nStatus, cBody, aHeaders |
OnProgress | Datos | Progreso de descarga/subida. Parametros: nCurrent, nTotal |
OnError | Error | Solicitud fallida |
TFtpClient CT_FTPCLIENT = 74
Cliente FTP/FTPS para operaciones de transferencia de archivos.
| Propiedad | Tipo | Valor predet. | Descripcion |
cHost | String | "" | Nombre de host del servidor FTP |
nPort | Numerico | 21 | Puerto del servidor |
cUser | String | "" | Nombre de usuario de inicio de sesion |
cPassword | String | "" | Contrasena de inicio de sesion |
lPassiveMode | Logico | .T. | Usar modo pasivo para transferencias de datos |
lSSL | Logico | .F. | Usar FTPS (FTP sobre TLS) |
| Evento | Categoria | Descripcion |
OnConnect | Conexion | Conectado exitosamente al servidor |
OnTransfer | Datos | Progreso de transferencia de archivos. Parametros: cFile, nBytes, nTotal |
OnError | Error | Error de conexion o transferencia |
TSmtpClient CT_SMTPCLIENT = 75
Cliente SMTP para enviar mensajes de correo electronico con archivos adjuntos.
| Propiedad | Tipo | Valor predet. | Descripcion |
cHost | String | "" | Nombre de host del servidor SMTP |
nPort | Numerico | 587 | Puerto del servidor (25, 465, o 587) |
lSSL | Logico | .T. | Usar cifrado TLS/SSL |
cUser | String | "" | Nombre de usuario de autenticacion |
cPassword | String | "" | Contrasena de autenticacion |
cFrom | String | "" | Direccion de correo del remitente |
cTo | String | "" | Direccion(es) de correo del destinatario, separadas por comas |
cSubject | String | "" | Linea de asunto del correo |
cBody | String | "" | Contenido del cuerpo del correo |
| Evento | Categoria | Descripcion |
OnSend | Accion | Correo enviado exitosamente |
OnError | Error | Error de envio o conexion |
TTcpServer CT_TCPSERVER = 76
Servidor de sockets TCP. Escucha conexiones entrantes y gestiona multiples clientes.
| Propiedad | Tipo | Valor predet. | Descripcion |
nPort | Numerico | 0 | Puerto de escucha |
cHost | String | "0.0.0.0" | Direccion de enlace |
nMaxConnections | Numerico | 128 | Maximo de conexiones simultaneas |
lActive | Logico | .F. | El servidor esta escuchando actualmente (solo lectura) |
| Evento | Categoria | Descripcion |
OnAccept | Conexion | Nueva conexion de cliente aceptada. Parametros: oClient |
OnReceive | Datos | Datos recibidos del cliente. Parametros: oClient, cData |
OnDisconnect | Conexion | Cliente desconectado. Parametros: oClient |
TTcpClient CT_TCPCLIENT = 77
Cliente de socket TCP. Se conecta a un servidor remoto para comunicacion basada en flujo.
| Propiedad | Tipo | Valor predet. | Descripcion |
cHost | String | "" | Nombre de host o IP del servidor remoto |
nPort | Numerico | 0 | Puerto del servidor remoto |
nTimeout | Numerico | 10000 | Tiempo de espera de conexion en milisegundos |
lConnected | Logico | .F. | Estado de conexion (solo lectura) |
| Evento | Categoria | Descripcion |
OnConnect | Conexion | Conectado exitosamente al servidor |
OnReceive | Datos | Datos recibidos del servidor. Parametros: cData |
OnDisconnect | Conexion | Desconectado del servidor |
TUdpSocket CT_UDPSOCKET = 78
Socket de datagramas UDP para comunicacion sin conexion y de baja latencia.
| Propiedad | Tipo | Valor predet. | Descripcion |
nPort | Numerico | 0 | Puerto local al que vincular |
lBroadcast | Logico | .F. | Habilitar modo de difusion (broadcast) |
cHost | String | "0.0.0.0" | Direccion de enlace |
| Evento | Categoria | Descripcion |
OnReceive | Datos | Datagrama 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.