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.