Árvore de páginas

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

  • Sem rótulos