TCPListener
La clase TCPListener permite crear y configurar un servidor TCP en 4D. Una vez instanciado el listener TCP, puede recibir conexiones TCP clientes y comunicarse utilizando cualquier protocolo que soporte TCP.
La clase TCPListener está disponible en el class store 4D. Puede crear un servidor TCP utilizando la función 4D.TCPListener.new(), que devuelve un objeto TCPListener.
Todas las funciones de la clase TCPListener son hilo seguro.
Historia
| Lanzamiento | Modificaciones | 
|---|---|
| 20 R9 | Clase añadida | 
Ejemplo
property listener : 4D.TCPListener
Class constructor($port : Integer)
	
	This.listener:=4D.TCPListener.new($port; This)
		
Function terminate()
	
	This.listener.terminate()
	
Function onConnection($listener : 4D.TCPListener; $event : 4D.TCPEvent)->$result
    	//cuando se conecta, inicia un servidor para manejar la comunicación
	If($event.address # "192.168.@") 
		$result:=Null //en algunos casos puede rechazar la conexión
	Else
		$result:=cs.MyAsyncTCPConnection.new(This) //ver clase TCPConnection
	End if
	
Function onError($listener : 4D.TCPListener; $event : 4D.TCPEvent)
	
Function onTerminate($listener : 4D.TCPListener; $event : 4D.TCPEvent)
Ver ejemplo en la clase TCPConnection para una descripción de la clase de usuario MyAsyncTCPConnection.
Objeto TCPListener
Un objeto TCPListener es un objeto compartido.
Los objetos TCPListener ofrecen las siguientes propiedades y funciones:
| errors : Collection una colección de objetos de error asociados con la conexión | 
| port : Number el número de puerto de la máquina | 
| .terminate() cierra el oyente y libera el puerto | 
4D.TCPListener.new()
4D.TCPListener.new( port : Number ; options : Object ) : 4D.TCPListener
| Parámetros | Tipo | Descripción | |
|---|---|---|---|
| port | Number | -> | Puerto TCP de escucha | 
| options | Object | -> | Configuración de opciones para el listener | 
| Resultado | 4D.TCPListener | <- | Nuevo objeto TCPListener | 
Descripción
La función 4D.TCPListener.new() crea un nuevo servidor TCP escuchando el puerto especificado usando las options definidas, y devuelve un objeto 4D.TCPListener.
Parámetro options
En el parámetro opciones, pase un objeto para configurar el listener y todos los TCPConnections que crea:
| Propiedad | Tipo | Descripción | Por defecto | 
|---|---|---|---|
| onConnection | Formula | Retrollamada cuando se define una nueva conexión. La fórmula recibe dos parámetros ($listener y $event, ver más abajo) y debe devolver o bien null/undefined para impedir la conexión o bien un objeto option que se utilizará para crear la TCPConnection. | Indefinido | 
| onError | Formula | Retrollamada activada en caso de error. La fórmula recibe el objeto TCPListeneren $listener | Indefinido | 
| onTerminate | Formula | Retrollamada activada justo antes de que se cierre el TCPListener. La fórmula recibe el objeto TCPListeneren $listener | Indefinido | 
Función callback (retrollamada)
Las funciones de retrollamada reciben hasta dos parámetros:
| Parámetros | Tipo | Descripción | 
|---|---|---|
| $listener | TCPListenerobject | La instancia actual del listener TCP. | 
| $event | objeto TCPEvent | Contiene información sobre el evento. | 
Secuencia de retrollamadas:
- onConnectionse activa cada vez que se establece una conexión.
- onErrorse activa si se produce un error.
- onTerminatesiempre se activa justo antes de terminar una conexión.
Objeto TCPEvent
Un objeto TCPEvent es devuelto cuando se llama una función de retrollamada.
.errors
errors : Collection
Descripción
La propiedad .errors contiene una colección de objetos de error asociados con la conexión. Cada objeto de error incluye el código de error, una descripción y la firma del componente que causó el error.
| Propiedad | Tipo | Descripción | |
|---|---|---|---|
| errors | Collection | Pila de error 4D en caso de error | |
| [].errCode | Number | Código de error 4D | |
| [].message | Text | Descripción del error 4D | |
| [].componentSignature | Text | Firma del componente interno que ha devuelto el error | 
.port
port : Number
Descripción
La propiedad .port contiene el número de puerto de la máquina. Esta propiedad es de solo lectura.
.terminate()
.terminate()
| Parámetros | Tipo | Descripción | |
|---|---|---|---|
| No requiere ningún parámetro | 
Descripción
La función terminate() cierra el oyente y libera el puerto.