TCPListener
A classe TCPListener
permite que você crie e configure um servidor TCP em 4D. Depois que o listener TCP for instanciado, você poderá receber conexões TCP clientes e se comunicar usando qualquer protocolo compatível com TCP.
A classe TCPListener
está disponível no repositório de classes 4D
. Você pode criar um servidor TCP usando a função 4D.TCPListener.new(), que retorna um objeto TCPListener.
Todas as funções da classe TCPListener
são thread-safe.
História
Release | Mudanças |
---|---|
20 R9 | Classe adicionada |
Exemplo
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
//quando conectado, inicie um servidor para tratar da comunicação
If($event.address # "192.168.@")
$result:=Null //em alguns casos, você pode rejeitar a conexão
Else
$result:=cs.MyAsyncTCPConnection.new(This) //ver classe TCPConnection
End if
Function onError($listener : 4D.TCPListener; $event : 4D.TCPEvent)
Function onTerminate($listener : 4D.TCPListener; $event : 4D.TCPEvent)
Veja exemplo da clase TCPConnection para uma descrição da classe de usuário MyAsyncTCPConnection.
TCPListener Object
Um objeto TCPListener é um objeto compartilhado.
Os objetos TCPListener fornecem as seguintes propriedades e funções:
errors : Collection uma coleção de objetos de erros associados à conexão |
port : Number o número da porta da máquina |
.terminate() fecha o listener e libera a porta |
4D.TCPListener.new()
4D.TCPListener.new( port : Number ; options : Object ) : 4D.TCPListener
Parâmetro | Tipo | Descrição | |
---|---|---|---|
port | Number | -> | Porta TCP para ouvir |
options | Object | -> | Configuração opções para o ouvinte |
Resultados | 4D.TCPListener | <- | Novo objeto TCPListener |
Descrição
A função 4D.TCPListener.new()
cria um novo servidor TCP que escuta a port especificada usando as options definidas e retorna um objeto 4D.TCPListener
.
options
parameter
No parâmetro options, passe um objeto para configurar o listener e todas as TCPConnections
que ele cria:
Propriedade | Tipo | Descrição | Por padrão |
---|---|---|---|
onConnection | Formula | Callback quando uma nova conexão é estabelecida. The Formula receives two parameters ($listener and $event, see below) and must return either null/undefined to prevent the connection or an option object that will be used to create the TCPConnection . | Indefinido |
onError | Formula | Callback triggered in case of an error. A fórmula recebe o objeto TCPListener em $listener | Indefinido |
onTerminate | Formula | Callback triggered just before the TCPListener is closed. A fórmula recebe o objeto TCPListener em $listener | Indefinido |
Funções Callback
Callback functions receive up to two parameters:
Parâmetro | Tipo | Descrição |
---|---|---|
$listener | TCPListener object | The current TCP listener instance. |
$event | objeto TCPEvent | Contém informações sobre o evento. |
Sequência de chamadas de retorno:
onConnection
é acionado cada vez que uma conexão é estabelecida.onError
é acionado se ocorrer um erro.onTerminate
é sempre acionado antes de uma conexão ser encerrada.
Objeto TCPEvent
Um objeto TCPEvent
é retornado quando uma função de callback é chamada.
.errors
errors : Collection
Descrição
A propriedade .errors
contém uma coleção de objetos de erros associados à conexão. Cada objeto de erro inclui o código de erro, uma descrição e a assinatura do componente que causou o erro.
Propriedade | Tipo | Descrição | |
---|---|---|---|
errors | Collection | pilha de erros 4D em caso de erro | |
[].errCode | Number | Código de erro 4D | |
[].message | Text | Descrição do erro 4D | |
[].componentSignature | Text | Assinatura da componente interna que devolveu o erro |
.port
port : Number
Descrição
A propriedade .port
contém o número da porta da máquina. Essa propriedade é somente leitura.
.terminate()
.terminate()
Parâmetro | Tipo | Descrição | |
---|---|---|---|
Não exige nenhum parâmetro |
Descrição
A função terminate()
fecha o listener e libera a porta.