SocketConn
Cria um conexão TCP com uma aplicação de destino, através do uso de um Socket do sistema operacional.
Sintaxe
SocketConn( < cIP >, < nPort >, < cReq >, [ nTimeOut ] )
Parâmetros
Nome | Tipo | Descrição | Obrigatório | Referência |
---|---|---|---|---|
cIP | caractere | Indica a string com o endereço IP ou nome da máquina de destino desejado. | X |
|
nPort | numérico | Indica o número da porta de comunicação que será utilizada para realizar a conexão. | X |
|
cReq | caractere | String a ser enviada para a conexão de destino, caso ela seja estabelecida com sucesso. | X |
|
nTimeOut | numérico | Informa o tempo, em segundos, de espera por um retorno ( time-out ). |
|
|
Retorno
Nome | Tipo | Descrição |
---|---|---|
cBuffer | caractere | String de bytes retornados pelo serviço chamado. Cada serviço pode retornar um buffer composto de uma string de bytes / caracteres, a ordem e interpretação deste retorno deve ser conhecida pela aplicação que o utiliza. |
Observações
- Para realizar a conexão, é necessário informar o destino, que pode ser o IP ou o nome da máquina, e, em seguida, o número da porta de comunicação que será utilizada para realizar a união através dessa porta. Através do parâmetro cReq, devemos informar uma string, que será enviada para o servidor-alvo da conexão, caso a conexão seja estabelecida. Após ser enviada, o Protheus Server aguardará por um retorno, até que o time-out seja atingido ou a conexão seja encerrada pelo server. A função retornará uma string contendo o buffer retornado pelo servidor-alvo da conexão. Caso o parâmetro de time-out informado seja 0 (zero), a função aguardará indefinidamente uma resposta do servidor para a conexão efetuada.A conexão será realizada a partir do TOTVSAppServer, mesmo que a aplicação Advpl seja iniciada e/ou executada a partir do TOTVSSmartClient.
Uso em serviços e/ou protocolo com conexão persistente
Como a conexão realizada não é persistente, e o fluxo de recebimento de dados também não oferece maiores controles, o uso desta função é indicado apenas para integrações com sistemas de conexão não-persistente. O uso desta função também é recomendável para requisições "curtas" de dados, nada que precise trafegar mais do que 1 KB
Caso a função seja utilizada com um protocolo persistente, por exemplo HTTP 1.1, mesmo que a função complete o recebimento da requisição em poucos segundos, como a conexão no servidor-alvo não é fechada, a função ficará em espera de recebimento, até que seja atingido o tempo especificado de time-out , para então retornar ao programa Advpl a string de dados recebida. Caso o parâmetro especificado seja 0 (zero), a conexão permanece aberta até que ela seja fechada pelo server, e/ou ocorra um evento de indisponibilidade / desconexão de rede. Por isso, independente do protocolo, não recomendamos o uso desta função com time-out zero.
Exemplos
User Function Exemplo() Local cIp := "www.google.com" Local nPorta := 80 Local ntimeOut := 5 Local cHttpGet := ""// Monta pacote de requisição HTTP básico cHttpGet += 'GET / HTTP/1.0'+CRLF cHttpGet += 'Accept: */*'+CRLF cHttpGet += 'Accept-Language: pt-br'+CRLF cHttpGet += 'User-Agent: Mozilla/4.0 (compatible)'+CRLF cHttpGet += CRLF// Faz a requisição cRet := socketconn(cIp,nPorta,cHttpGet,nTimeOut)// Mostra o retorno na tela MsgStop(cRet,"SOCKET RESPONSE") Return
Abrangência
Protheus 10 , TOTVS Application Server 10